diff --git a/dislocker.py b/dislocker.py index 8b01d1d..b3d64f5 100644 --- a/dislocker.py +++ b/dislocker.py @@ -927,7 +927,7 @@ class ReasonModal(discord.ui.Modal): if register["about"] == "ok": await interaction.response.send_message(f":white_check_mark: 使用が開始されました。\n>>> # パスワード | {register["output_dict"]["password"]}\n## PC番号 | {pc_number}\n## キーボード番号 | {keyboard_number_show}\n## マウス番号 | {mouse_number_show}\n## 使用目的 | {self.reason_input_form.value}", ephemeral=True) - await client.get_channel(dislocker.server_config["bot"]["log_channel_id"]).send(f':white_check_mark: {register["output_dict"]["name"]} さんがPC {pc_number} の使用を開始しました。\n>>> ## PC番号 | {pc_number}\n## キーボード番号 | {keyboard_number_show}\n## マウス番号 | {mouse_number_show}\n## 使用目的 | {self.reason_input_form.value}') + await send_log(mode="use", pc_number=pc_number, keyboard_number=keyboard_number, mouse_number=mouse_number, detail=self.reason_input_form.value, discord_user_id=interaction.user.id) dislocker.log(title=f"[INFO] PC番号{pc_number} の使用が開始されました。", message=f"名前 | {register["output_dict"]["name"]}, 使用目的 | {self.reason_input_form.value}", flag=0) elif register["about"] == "pc_already_in_use_by_you": pc_usage_history = register["pc_usage_history"] @@ -1057,6 +1057,46 @@ intents.message_content = True client = discord.Client(intents=intents) tree = discord.app_commands.CommandTree(client) +async def send_log(**kwargs): + try: + pc_number = str(kwargs.get("pc_number")) + discord_user_id = int(kwargs.get("discord_user_id")) + mode = str(kwargs.get("mode")) + + if mode == "use": + keyboard_number = int(kwargs.get("keyboard_number")) + mouse_number = int(kwargs.get("mouse_number")) + detail = str(kwargs.get("detail")) + + if keyboard_number == 0: + keyboard_number_show = "自前" + else: + keyboard_number_show = str(keyboard_number) + + if mouse_number == 0: + mouse_number_show = "自前" + else: + mouse_number_show = str(mouse_number) + + + log_embed = discord.Embed(title=f"PC {pc_number} 番 | 使用開始通知", description=f"<@{discord_user_id}> さんはPCの使用を開始しました。", color=0x1343EB) + log_embed.add_field(name="PC番号", value=pc_number) + log_embed.add_field(name="キーボード番号", value=keyboard_number_show) + log_embed.add_field(name="マウス番号", value=mouse_number_show) + log_embed.add_field(name="使用目的", value=detail) + + elif mode == "stop": + log_embed = discord.Embed(title=f"PC {pc_number} 番 | 使用終了通知", description=f"<@{discord_user_id}> さんはPCの使用を終了しました。", color=0xE512EB) + + await client.get_channel(dislocker.server_config["bot"]["log_channel_id"]).send(embed=log_embed) + + return {"result": 0, "about": "ok"} + + except Exception as error: + dislocker.log(title=f"[ERROR] ログ送信中にエラーが発生しました。 {str(error.__class__.__name__)}", message=str(error.args), flag=1) + return {"result": 1, "about": "error", "output_dict": {"error_class_name": str(error.__class__.__name__), "error_args": str(error.args)}} + + @client.event async def on_ready(): dislocker.log(title=f"[SUCCESS] DiscordのBotが起動しました。", message=f"{client.user.name} としてログインしています。", flag=1) @@ -1255,7 +1295,7 @@ async def on_button(interaction: discord.Interaction): register = dislocker.register(discord_user_id=interaction.user.id, name=interaction.user.name, display_name=interaction.user.display_name, pc_number=pc_number, keyboard_number=keyboard_number, mouse_number=mouse_number, detail=reason) if register["about"] == "ok": await interaction.response.send_message(f":white_check_mark: 使用が開始されました。\n>>> # パスワード | {register["output_dict"]["password"]}\n## PC番号 | {pc_number}\n## キーボード番号 | {str(keyboard_number_show)}\n## マウス番号 | {str(mouse_number_show)}\n## 使用目的 | {reason}", ephemeral=True) - await client.get_channel(dislocker.server_config["bot"]["log_channel_id"]).send(f':white_check_mark: {register["output_dict"]["name"]} さんがPC {pc_number} の使用を開始しました。\n>>> ## PC番号 | {pc_number}\n## 使用目的 | {reason}') + await send_log(mode="use", pc_number=pc_number, keyboard_number=keyboard_number, mouse_number=mouse_number, detail=reason, discord_user_id=interaction.user.id) dislocker.log(title=f"[INFO] PC番号{pc_number} の使用が開始されました。", message=f"名前 | {register["output_dict"]["name"]}, 使用目的 | {reason}", flag=0) elif register["about"] == "pc_already_in_use_by_you": pc_usage_history = register["pc_usage_history"] @@ -1312,7 +1352,7 @@ async def on_button(interaction: discord.Interaction): await interaction.response.send_message("# :dizzy_face: ユーザーとして登録されていないようです。\n最初にサーバーで登録を行ってください。", ephemeral=True) elif pc_stop["about"] == "ok": await interaction.response.send_message(f":white_check_mark: PC番号 {pc_stop["output_dict"]["pc_number"]} の使用が終了されました。", ephemeral=True) - await client.get_channel(dislocker.server_config["bot"]["log_channel_id"]).send(f':negative_squared_cross_mark: {pc_stop["output_dict"]["name"]} さんがPC {pc_stop["output_dict"]["pc_number"]} の使用を終了しました。') + await send_log(mode="stop", pc_number=pc_stop['output_dict']['pc_number'], discord_user_id=interaction.user.id) else: await interaction.response.send_message("# :skull_crossbones: 停止できませんでした。\n内部エラーが発生しています。", ephemeral=True) @@ -1333,7 +1373,7 @@ async def use(interaction: discord.Interaction, pc_number: int, keyboard_number: if register["result"] == 0: await interaction.response.send_message(f":white_check_mark: 使用が開始されました。\n>>> # パスワード | {register["output_dict"]["password"]}\n## PC番号 | {pc_number}\n## 使用目的 | {detail}", ephemeral=True) dislocker.log(title=f"[INFO] PC番号{pc_number} の使用が開始されました。", message=f"名前 | {register["output_dict"]["name"]}, 使用目的 | {detail}", flag=0) - await client.get_channel(dislocker.server_config["bot"]["log_channel_id"]).send(f':white_check_mark: {register["output_dict"]["name"]} さんがPC {pc_number} の使用を開始しました。\n>>> ## PC番号 | {pc_number}\n## 使用目的 | {detail}') + await send_log(mode="use", pc_number=pc_number, keyboard_number=keyboard_number, mouse_number=mouse_number, detail=detail, discord_user_id=interaction.user.id) elif register["result"] == 1: if register["about"] == "pc_already_in_use_by_other": await interaction.response.send_message(":x: 他の方がそのPCを使用中です。", ephemeral=True) @@ -1350,24 +1390,23 @@ async def use(interaction: discord.Interaction, pc_number: int, keyboard_number: @tree.command(name="stop", description="パソコンの使用を終了します。通常はこのコマンドを使用する必要はありません。") async def stop(interaction: discord.Interaction): - stop = dislocker.stop(discord_user_id=interaction.user.id) - if stop["result"] == 0: - await interaction.response.send_message(f":white_check_mark: 使用が終了されました。\n>>> ## PC番号 | {stop['output_dict']['pc_number']}", ephemeral=True) - result_embed = discord.Embed(title=":white_check_mark: 使用停止処理は完了しました。", description=f'PC番号 {stop['output_dict']['pc_number']} 番の使用停止処理が完了しました。', color=0x56FF01) - dislocker.log(title=f"[INFO] PC番号{stop['output_dict']['pc_number']} の使用が終了されました。", message=f"名前 | {stop['output_dict']['name']}", flag=0) - log_embed = discord.Embed(title=f":information_source: PC番号 {stop['output_dict']['pc_number']} の使用は終了されました。", description=f"<@{interaction.user.id}> によるリクエスト", color=0x2286C9) - await client.get_channel(dislocker.server_config["bot"]["log_channel_id"]).send(embed=log_embed) + pc_stop = dislocker.stop(discord_user_id=interaction.user.id) + if pc_stop["result"] == 0: + await interaction.response.send_message(f":white_check_mark: 使用が終了されました。\n>>> ## PC番号 | {pc_stop['output_dict']['pc_number']}", ephemeral=True) + result_embed = discord.Embed(title=":white_check_mark: 使用停止処理は完了しました。", description=f'PC番号 {pc_stop['output_dict']['pc_number']} 番の使用停止処理が完了しました。', color=0x56FF01) + dislocker.log(title=f"[INFO] PC番号{pc_stop['output_dict']['pc_number']} の使用が終了されました。", message=f"名前 | {pc_stop['output_dict']['name']}", flag=0) + await send_log(mode="stop", pc_number=pc_stop['output_dict']['pc_number'], discord_user_id=interaction.user.id) - elif stop["result"] == 1: - if stop["about"] == "unused": + elif pc_stop["result"] == 1: + if pc_stop["about"] == "unused": result_embed = discord.Embed(title=":x: 操作に失敗しました。", description=f'あなたはPCを使用されていないようです...', color=0xC91111) - elif stop["about"] == "user_data_not_found": + elif pc_stop["about"] == "user_data_not_found": result_embed = discord.Embed(title=":x: 操作に失敗しました。", description=f'Dislockerのユーザーとして登録されていないようです。\n登録を行ってから、またお試しください。', color=0xC91111) - elif stop["about"] == "error": + elif pc_stop["about"] == "error": result_embed = discord.Embed(title=":x: 操作に失敗しました。", description=f'サーバーでエラーが発生しています。', color=0xC91111) - result_embed.add_field(name=f"{stop['output_dict']['error_class_name']}", value=f"{stop['output_dict']['error_args']}") + result_embed.add_field(name=f"{pc_stop['output_dict']['error_class_name']}", value=f"{pc_stop['output_dict']['error_args']}") await interaction.response.send_message(embed=result_embed, ephemeral=True)