diff --git a/dislocker.py b/dislocker.py index b15c720..8339cd2 100644 --- a/dislocker.py +++ b/dislocker.py @@ -1000,7 +1000,7 @@ class Monitor(): user_info = cursor.fetchall() stop = dislocker.stop(discord_user_id=user_info[0][3], bot_about="タイムアウトでBotによる強制停止。") discord_user_id = dislocker.get_discord_user_id(member_id=member_id)["discord_user_id"] - asyncio.run(send_log(mode="timeout", pc_number=i[0], discord_user_id=discord_user_id)) + asyncio.run_coroutine_threadsafe(send_log(mode="timeout", pc_number=i[0], discord_user_id=discord_user_id)) dislocker.log(title=f"[INFO] パスワードのタイムアウト時間に達したため、強制停止されました。", flag=0) result = {"result": "STOP", "details": str(pc_usage)} else: @@ -1067,6 +1067,19 @@ async def send_log(**kwargs): elif mode == "timeout": log_embed = discord.Embed(title=f":alarm_clock: PC {pc_number} 番 | タイムアウト通知", description=f"<@{discord_user_id}> さんが指定時間内にPCを使用しなかったため、停止されました。", color=0xE512EB) + + elif mode == "userreg": + log_embed = discord.Embed(title=f":bust_in_silhouette: ユーザー登録通知", description=f"<@{discord_user_id}> さんがユーザーとして登録されました。", color=0x1343EB) + + elif mode == "fstop": + reason = str(kwargs.get("reason")) + log_embed = discord.Embed(title=f":stop_button: PC {pc_number} 番 | 強制停止通知", description=f"<@{discord_user_id}> さんによってPCの使用は停止されました。", color=0xE512EB) + log_embed.add_field(name="理由", value=reason) + + elif mode == "pcnickname": + alt_name = str(kwargs.get("alt_name")) + log_embed = discord.Embed(title=f":pencil: PC {pc_number} 番 | PCのニックネーム変更通知", description=f"<@{discord_user_id}> さんによってPCのニックネームが変更されました。", color=0x1343EB) + log_embed.add_field(name="ニックネーム", value=alt_name) await client.get_channel(dislocker.server_config["bot"]["log_channel_id"]).send(embed=log_embed) @@ -1340,6 +1353,7 @@ async def on_button(interaction: discord.Interaction): user_register = dislocker.user_register(name=interaction.user.display_name, discord_user_name=interaction.user.name, discord_user_id=interaction.user.id) if user_register["about"] == "ok": await interaction.response.send_message(f"# :white_check_mark: ユーザー情報が登録されました。\n>>> ユーザー名:{interaction.user.display_name}", ephemeral=True) + await send_log(mode="userreg", discord_user_id=interaction.user.id) elif user_register["about"] == "already_exists": await interaction.response.send_message("# :no_entry: 登録できませんでした。\nもう登録されている可能性があります。", ephemeral=True) else: @@ -1399,6 +1413,7 @@ async def userreg(interaction: discord.Interaction, discord_user_id: str, discor if user_register["result"] == 0: result_embed = discord.Embed(title=":white_check_mark: ユーザー登録が完了しました。", description=f'続いて、PCの使用登録を行いましょう!', color=0x56FF01) dislocker.log(title=f"[INFO] ユーザーを登録しました。", message=f"名前 | {name}, Discordユーザー名 | {discord_user_name}, DiscordユーザーID | {discord_user_id}", flag=0) + await send_log(mode="userreg", discord_user_id=discord_user_id) elif user_register["result"] == 1: if user_register["about"] == "already_exists": @@ -1486,13 +1501,13 @@ async def devicereg(interaction: discord.Interaction, how_much: int): @tree.command(name="fstop", description="PCの使用登録を強制的に終了します。") @discord.app_commands.default_permissions(administrator=True) -async def fstop(interaction: discord.Interaction, pc_number: int, about: str): +async def fstop(interaction: discord.Interaction, pc_number: int, reason: str): if interaction.guild_id in dislocker.server_config["bot"]["server_id"] or interaction.user.id in dislocker.server_config["bot"]["admin_user_id"]: - force_stop = dislocker.force_stop(pc_number=pc_number, bot_about=about) + force_stop = dislocker.force_stop(pc_number=pc_number, bot_about=reason) if force_stop["result"] == 0: result_embed = discord.Embed(title=":white_check_mark: 処理が完了しました。", description=f'PC番号 {str(pc_number)} 番の使用登録は抹消されました。', color=0x56FF01) - - dislocker.log(title=f"[INFO] PC {pc_number} の使用を強制終了しました。", message=f"理由 | {about}", flag=0) + dislocker.log(title=f"[INFO] PC {pc_number} の使用を強制終了しました。", message=f"理由 | {reason}", flag=0) + await send_log(mode="fstop", pc_number=pc_number, discord_user_id=interaction.user.id, detail=reason) elif force_stop["result"] == 1: if force_stop["about"] == "not_used": result_embed = discord.Embed(title=":x: 操作に失敗しました。", description=f'指定されたPCは使用されていないようです...', color=0xC91111) @@ -1607,6 +1622,7 @@ async def pcnickname(interaction: discord.Interaction, pc_number: int, nickname: pc_nickname_set = dislocker.set_pc_nickname(pc_number=pc_number, alt_name=nickname) if pc_nickname_set["result"] == 0: result_embed = discord.Embed(title=":white_check_mark: 操作が完了しました。", description=f'PC番号 {str(pc_number)} のニックネームは {str(nickname)} に設定されました。', color=0x56FF01) + await send_log(mode="pcnickname", pc_number=pc_number, discord_user_id=interaction.user.id, detail=nickname) else: result_embed = discord.Embed(title=":x: 操作に失敗しました。", description=f'サーバーでエラーが発生しています。ニックネームは変更されません。', color=0xC91111)