#20 PCの登録を解除するスラッシュコマンドの追加
This commit is contained in:
parent
e65f6024d3
commit
d643e6d1ba
1 changed files with 57 additions and 0 deletions
57
dislocker.py
57
dislocker.py
|
@ -899,6 +899,31 @@ class DL():
|
|||
if cursor:
|
||||
cursor.close()
|
||||
|
||||
def pc_unregister(self, **kwargs):
|
||||
try:
|
||||
cursor = self.db.cursor()
|
||||
|
||||
if 'pc_number' in kwargs:
|
||||
pc_number = int(kwargs["pc_number"])
|
||||
cursor.execute("SELECT * FROM pc_list WHERE pc_number = %s", (pc_number,))
|
||||
pc_list = cursor.fetchall()
|
||||
if pc_list:
|
||||
cursor.execute("DELETE FROM pc_list WHERE pc_number = %s", (pc_number,))
|
||||
self.db.commit()
|
||||
return {"result": 0, "about": "ok"}
|
||||
else:
|
||||
return {"result": 1, "about": "not_exists"}
|
||||
else:
|
||||
return {"result": 1, "about": "syntax_error"}
|
||||
|
||||
except Exception as error:
|
||||
self.log(title=f"[ERROR] PCの登録解除中にエラーが発生しました。 {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)}}
|
||||
|
||||
finally:
|
||||
if cursor:
|
||||
cursor.close()
|
||||
|
||||
|
||||
class ReasonModal(discord.ui.Modal):
|
||||
def __init__(self, title: str, pc_number: str, keyboard_number: str, mouse_number: str, timeout=15) -> None:
|
||||
|
@ -1081,6 +1106,14 @@ async def send_log(**kwargs):
|
|||
log_embed = discord.Embed(title=f":pencil: PC {pc_number} 番 | PCのニックネーム変更通知", description=f"<@{discord_user_id}> さんによってPCのニックネームが変更されました。\nボタンに変更を適用する場合は、再度 /init コマンドでボタンを送信して下さい。\n古いボタンを削除することをお忘れなく!", color=0x1343EB)
|
||||
log_embed.add_field(name="ニックネーム", value=alt_name)
|
||||
|
||||
elif mode == "pcunreg":
|
||||
alt_name = str(kwargs.get("alt_name"))
|
||||
if alt_name == None:
|
||||
log_embed = discord.Embed(title=f":x: PC {pc_number} 番 | PCの登録解除通知", description=f"<@{discord_user_id}> さんによってPCの登録が解除されました。", color=0xE512EB)
|
||||
else:
|
||||
log_embed = discord.Embed(title=f":x: PC {pc_number} 番 | PCの登録解除通知", description=f"<@{discord_user_id}> さんによってPCの登録が解除されました。", color=0xE512EB)
|
||||
log_embed.add_field(name="ニックネーム", value=alt_name)
|
||||
|
||||
await client.get_channel(dislocker.server_config["bot"]["log_channel_id"]).send(embed=log_embed)
|
||||
|
||||
return {"result": 0, "about": "ok"}
|
||||
|
@ -1630,6 +1663,30 @@ async def pcnickname(interaction: discord.Interaction, pc_number: int, nickname:
|
|||
|
||||
await interaction.response.send_message(embed=result_embed, ephemeral=True)
|
||||
|
||||
@tree.command(name="pcunreg", description="PCの登録を解除します。")
|
||||
@discord.app_commands.default_permissions(administrator=True)
|
||||
async def pcunreg(interaction: discord.Interaction, pc_number:int):
|
||||
if interaction.guild_id in dislocker.server_config["bot"]["server_id"] or interaction.user.id in dislocker.server_config["bot"]["admin_user_id"]:
|
||||
pc_dict = dislocker.get_pc_list()['output_dict'].get(pc_number)
|
||||
if pc_dict == None:
|
||||
result_embed = discord.Embed(title=":x: 操作に失敗しました。", description=f'指定されたPC番号には登録されていません。', color=0xC91111)
|
||||
await interaction.response.send_message(embed=result_embed, ephemeral=True)
|
||||
else:
|
||||
nickname = pc_dict['alt_name']
|
||||
pc_unregister = dislocker.pc_unregister(pc_number=pc_number)
|
||||
if pc_unregister["result"] == 0:
|
||||
if nickname == None:
|
||||
result_embed = discord.Embed(title=":white_check_mark: 操作が完了しました。", description=f'PC {str(pc_number)} 番 の登録は解除されました。', color=0x56FF01)
|
||||
else:
|
||||
result_embed = discord.Embed(title=":white_check_mark: 操作が完了しました。", description=f'PC {str(pc_number)} 番 | {str(nickname)}の登録は解除されました。', color=0x56FF01)
|
||||
|
||||
await send_log(mode="pcunreg", pc_number=pc_number, discord_user_id=interaction.user.id, alt_name=nickname)
|
||||
|
||||
else:
|
||||
result_embed = discord.Embed(title=":x: 操作に失敗しました。", description=f'サーバーでエラーが発生しています。登録は解除されません。', color=0xC91111)
|
||||
result_embed.add_field(name=f"{pc_unregister['output_dict']['error_class_name']}", value=f"{pc_unregister['output_dict']['error_args']}")
|
||||
|
||||
await interaction.response.send_message(embed=result_embed, ephemeral=True)
|
||||
|
||||
if dislocker.init_result == "ok":
|
||||
print("Botを起動します...")
|
||||
|
|
Loading…
Reference in a new issue