スラッシュコマンドを追加
This commit is contained in:
parent
5578cffad6
commit
4f78a54b2f
1 changed files with 117 additions and 0 deletions
|
@ -640,6 +640,64 @@ class DL():
|
||||||
finally:
|
finally:
|
||||||
if cursor:
|
if cursor:
|
||||||
cursor.close()
|
cursor.close()
|
||||||
|
|
||||||
|
def pc_onetime_gen(self):
|
||||||
|
try:
|
||||||
|
if os.path.isfile(dislocker.onetime_config_path):
|
||||||
|
with open(dislocker.onetime_config_path, "r") as r:
|
||||||
|
onetime_config = json.load(r)
|
||||||
|
onetime = onetime_config["onetime"]["pc_register"]
|
||||||
|
if onetime == None:
|
||||||
|
onetime = str(self.password_generate(8))
|
||||||
|
onetime_config["onetime"]["pc_register"] = onetime
|
||||||
|
with open(dislocker.onetime_config_path, "w") as w:
|
||||||
|
json.dump(onetime_config, w, indent=4)
|
||||||
|
return {"result": 0, "about": "ok", "onetime": onetime}
|
||||||
|
else:
|
||||||
|
return {"result": 0, "already_exists": "ok", "onetime": onetime}
|
||||||
|
else:
|
||||||
|
onetime = str(self.password_generate(8))
|
||||||
|
onetime_config = {
|
||||||
|
"onetime": {
|
||||||
|
"pc_register": onetime,
|
||||||
|
"device_register": None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
with open(dislocker.onetime_config_path, "w") as w:
|
||||||
|
json.dump(onetime_config, w, indent=4)
|
||||||
|
return {"result": 0, "about": "ok", "onetime": onetime}
|
||||||
|
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"}
|
||||||
|
|
||||||
|
def device_onetime_gen(self):
|
||||||
|
try:
|
||||||
|
if os.path.isfile(dislocker.onetime_config_path):
|
||||||
|
with open(dislocker.onetime_config_path, "r") as r:
|
||||||
|
onetime_config = json.load(r)
|
||||||
|
onetime = onetime_config["onetime"]["device_register"]
|
||||||
|
if onetime == None:
|
||||||
|
onetime = str(self.password_generate(8))
|
||||||
|
onetime_config["onetime"]["device_register"] = onetime
|
||||||
|
with open(dislocker.onetime_config_path, "w") as w:
|
||||||
|
json.dump(onetime_config, w, indent=4)
|
||||||
|
return {"result": 0, "about": "ok", "onetime": onetime}
|
||||||
|
else:
|
||||||
|
return {"result": 0, "already_exists": "ok", "onetime": onetime}
|
||||||
|
else:
|
||||||
|
onetime = str(self.password_generate(8))
|
||||||
|
onetime_config = {
|
||||||
|
"onetime": {
|
||||||
|
"pc_register": None,
|
||||||
|
"device_register": onetime
|
||||||
|
}
|
||||||
|
}
|
||||||
|
with open(dislocker.onetime_config_path, "w") as w:
|
||||||
|
json.dump(onetime_config, w, indent=4)
|
||||||
|
return {"result": 0, "about": "ok", "onetime": onetime}
|
||||||
|
except Exception as error:
|
||||||
|
self.log(title=f"[ERROR] デバイス登録用のワンタイムパスワードを発行中にエラーが発生しました。 {str(error.__class__.__name__)}", message=str(error.args), flag=1)
|
||||||
|
return {"result": 1, "about": "error"}
|
||||||
|
|
||||||
dislocker = DL()
|
dislocker = DL()
|
||||||
|
|
||||||
|
@ -658,6 +716,7 @@ async def on_ready():
|
||||||
print("------")
|
print("------")
|
||||||
await tree.sync()
|
await tree.sync()
|
||||||
|
|
||||||
|
#使用者側のスラッシュコマンド
|
||||||
@tree.command(name="use", description="パソコンの使用登録をします。通常はこのコマンドを使用する必要はありません。")
|
@tree.command(name="use", description="パソコンの使用登録をします。通常はこのコマンドを使用する必要はありません。")
|
||||||
async def use(interaction: discord.Interaction, pc_number: int, keyboard_number: int, mouse_number: int, detail: str):
|
async def use(interaction: discord.Interaction, pc_number: int, keyboard_number: int, mouse_number: int, detail: str):
|
||||||
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=detail)
|
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=detail)
|
||||||
|
@ -694,5 +753,63 @@ async def stop(interaction: discord.Interaction):
|
||||||
elif stop["about"] == "error":
|
elif stop["about"] == "error":
|
||||||
await interaction.response.send_message("# :skull_crossbones: 停止できませんでした。\n内部エラーが発生しています。", ephemeral=True)
|
await interaction.response.send_message("# :skull_crossbones: 停止できませんでした。\n内部エラーが発生しています。", ephemeral=True)
|
||||||
|
|
||||||
|
#管理者側のスラッシュコマンド
|
||||||
|
@tree.command(name="userreg", description="ユーザーを登録します。")
|
||||||
|
async def userreg(interaction: discord.Interaction, discord_user_id: str, discord_user_name: str, name: str):
|
||||||
|
user_register = dislocker.user_register(discord_user_id=discord_user_id, discord_user_name=discord_user_name, name=name)
|
||||||
|
if user_register["result"] == 0:
|
||||||
|
await interaction.response.send_message(":white_check_mark: ユーザーを登録しました。", ephemeral=True)
|
||||||
|
dislocker.log(title=f"[INFO] ユーザーを登録しました。", message=f"名前 | {name}, Discordユーザー名 | {discord_user_name}, DiscordユーザーID | {discord_user_id}", flag=0)
|
||||||
|
elif user_register["result"] == 1:
|
||||||
|
if user_register["about"] == "already_exists":
|
||||||
|
await interaction.response.send_message(":x: 既に登録されているユーザーです。", ephemeral=True)
|
||||||
|
elif user_register["about"] == "error":
|
||||||
|
await interaction.response.send_message(":x: 内部エラーが発生しました。\nサーバーでエラーが発生しています。管理者に問い合わせてください。", ephemeral=True)
|
||||||
|
|
||||||
|
@tree.command(name="pcreg", description="PCを登録するためのワンタイムパスワードを発行します。")
|
||||||
|
async def pcreg(interaction: discord.Interaction):
|
||||||
|
onetime = dislocker.pc_onetime_gen()
|
||||||
|
if onetime["result"] == 0:
|
||||||
|
await interaction.response.send_message(f":white_check_mark: PC登録用のワンタイムパスワードを発行しました。\n>>> # ワンタイムパスワード | {onetime['onetime']}\n## 有効期限 | 1回の登録でのみ使用可能です。", ephemeral=True)
|
||||||
|
dislocker.log(title=f"[INFO] PC登録用のワンタイムパスワードを発行しました。", message=f"ワンタイムパスワード | {onetime['onetime']}", flag=0)
|
||||||
|
elif onetime["result"] == 1:
|
||||||
|
if onetime["about"] == "error":
|
||||||
|
await interaction.response.send_message(":x: 内部エラーが発生しました。\nサーバーでエラーが発生しています。管理者に問い合わせてください。", ephemeral=True)
|
||||||
|
|
||||||
|
@tree.command(name="devicereg", description="デバイスを登録するためのワンタイムパスワードを発行します。")
|
||||||
|
async def devicereg(interaction: discord.Interaction):
|
||||||
|
onetime = dislocker.device_onetime_gen()
|
||||||
|
if onetime["result"] == 0:
|
||||||
|
await interaction.response.send_message(f":white_check_mark: デバイス登録用のワンタイムパスワードを発行しました。\n>>> # ワンタイムパスワード | {onetime['onetime']}\n## 有効期限 | 1回の登録でのみ使用可能です。", ephemeral=True)
|
||||||
|
dislocker.log(title=f"[INFO] デバイス登録用のワンタイムパスワードを発行しました。", message=f"ワンタイムパスワード | {onetime['onetime']}", flag=0)
|
||||||
|
elif onetime["result"] == 1:
|
||||||
|
if onetime["about"] == "error":
|
||||||
|
await interaction.response.send_message(":x: 内部エラーが発生しました。\nサーバーでエラーが発生しています。管理者に問い合わせてください。", ephemeral=True)
|
||||||
|
|
||||||
|
@tree.command(name="fstop", description="PCの使用を強制終了します。")
|
||||||
|
async def fstop(interaction: discord.Interaction, pc_number: int, bot_about: str):
|
||||||
|
force_stop = dislocker.force_stop(pc_number=pc_number, bot_about=bot_about)
|
||||||
|
if force_stop["result"] == 0:
|
||||||
|
await interaction.response.send_message(f":white_check_mark: PC {pc_number} の使用を強制終了しました。", ephemeral=True)
|
||||||
|
dislocker.log(title=f"[INFO] PC {pc_number} の使用を強制終了しました。", message=f"理由 | {bot_about}", flag=0)
|
||||||
|
elif force_stop["result"] == 1:
|
||||||
|
if force_stop["about"] == "not_used":
|
||||||
|
await interaction.response.send_message(":x: そのPCは使用されていません。", ephemeral=True)
|
||||||
|
elif force_stop["about"] == "bot_about_not_found":
|
||||||
|
await interaction.response.send_message(":x: 理由が指定されていません。", ephemeral=True)
|
||||||
|
elif force_stop["about"] == "error":
|
||||||
|
await interaction.response.send_message(":x: 内部エラーが発生しました。\nサーバーでエラーが発生しています。管理者に問い合わせてください。", ephemeral=True)
|
||||||
|
|
||||||
|
@tree.command(name="report", description="PCの使用履歴をエクスポートします。")
|
||||||
|
async def report(interaction: discord.Interaction):
|
||||||
|
report_export = dislocker.report_export()
|
||||||
|
if report_export["result"] == 0:
|
||||||
|
await interaction.response.send_message(f":white_check_mark: 使用履歴のレポートです。", file=discord.File(report_export["file_path"]), ephemeral=True)
|
||||||
|
dislocker.log(title=f"[INFO] PCの使用履歴をエクスポートしました。", message=f"ファイルパス | {report_export['file_path']}", flag=0)
|
||||||
|
elif report_export["result"] == 1:
|
||||||
|
if report_export["about"] == "error":
|
||||||
|
await interaction.response.send_message(":x: 内部エラーが発生しました。\nサーバーでエラーが発生しています。管理者に問い合わせてください。", ephemeral=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
client.run(dislocker.server_config["bot"]["token"])
|
client.run(dislocker.server_config["bot"]["token"])
|
Loading…
Reference in a new issue