指定ユーザーのDMにこたえるように

This commit is contained in:
suti7yk5032 2024-09-26 18:09:51 +09:00
parent 02e0b8b95d
commit 33dd3aef9b

View file

@ -873,6 +873,96 @@ async def on_ready():
) )
await client.change_presence(activity=dislocker_activity) await client.change_presence(activity=dislocker_activity)
@client.event
async def on_message(self, message):
if message.author.bot:
pass
elif isinstance(message.channel, discord.DMChannel):
if message.author.id == dislocker.server_config["bot"]["admin_user_id"]:
msg_split = message.content.split()
if msg_split[0] == "/pcreg":
max_count = 1
if len(msg_split) == 2:
if msg_split[1].isdecimal():
max_count = int(msg_split[1])
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"]["password"]
if onetime == None:
onetime = str(self.password_generate(8))
onetime_config["onetime"]["pc_register"]["password"] = onetime
onetime_config["onetime"]["pc_register"]["max_count"] = max_count
with open(dislocker.onetime_config_path, "w") as w:
json.dump(onetime_config, w, indent=4)
await message.channel.send(f"# :dizzy_face: PC登録時のワンタイムパスワードを発行します。\n# パスワード | {onetime}\n# 最大使用回数 | {str(max_count)}")
else:
await message.channel.send(f"# :dizzy_face: 既にワンタイムパスワードは発行されています。\n# パスワード | {onetime}\n# 残り使用回数 | {str(max_count - onetime_config['onetime']['pc_register']['current_count'])}")
else:
onetime = str(self.password_generate(8))
onetime_config = {
"onetime": {
"pc_register": {
"password": onetime,
"current_count": 0,
"max_count": int(max_count)
},
"device_register": {
"password": None,
"current_count": None,
"max_count": None
}
}
}
with open(dislocker.onetime_config_path, "w") as w:
json.dump(onetime_config, w, indent=4)
await message.channel.send(f"# :dizzy_face: PC登録時のワンタイムパスワードを発行します。\n# パスワード | {onetime}\n# 最大使用回数 | {str(max_count)}")
elif msg_split[0] == "/devreg":
max_count = 1
if len(msg_split) == 2:
if msg_split[1].isdecimal():
max_count = int(msg_split[1])
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"]["password"]
if onetime == None:
onetime = str(self.password_generate(8))
onetime_config["onetime"]["device_register"]["password"] = onetime
onetime_config["onetime"]["device_register"]["max_count"] = max_count
with open(dislocker.onetime_config_path, "w") as w:
json.dump(onetime_config, w, indent=4)
await message.channel.send(f"# :dizzy_face: デバイス登録時のワンタイムパスワードを発行します。\n# パスワード | {onetime}\n# 最大使用回数 | {str(max_count)}")
else:
await message.channel.send(f"# :dizzy_face: 既にワンタイムパスワードは発行されています。\n# パスワード | {onetime}\n# 残り使用回数 | {str(max_count - onetime_config['onetime']['device_register']['current_count'])}")
else:
onetime = str(self.password_generate(8))
onetime_config = {
"onetime": {
"pc_register": {
"password": None,
"current_count": None,
"max_count": None
},
"device_register": {
"password": onetime,
"current_count": 0,
"max_count": int(max_count)
}
}
}
with open(dislocker.onetime_config_path, "w") as w:
json.dump(onetime_config, w, indent=4)
await message.channel.send(f"# :dizzy_face: デバイス登録時のワンタイムパスワードを発行します。\n# パスワード | {onetime}\n# 最大使用回数 | {str(max_count)}")
else:
await message.channel.send("# :warning: DMでの応答は、現在無効化されています。")
else:
await message.channel.send("# :warning: DMでの応答は、現在無効化されています。")
@client.event @client.event
async def on_interaction(interaction: discord.Interaction): async def on_interaction(interaction: discord.Interaction):
try: try: