Discordのチャットをまとめて消すBOTを作る
Discordにありそうで無かったチャットをまとめて消す機能を持つBOTをPythonで作成。
参考:Pythonで実用Discord bot(discord.py解説)
コマンド:!delchat *
*は消したい文を2~50まで選択可
例)!delchat 30
最新から30文までまとめて削除
注意としては、削除できるのが2週間以内に発信されたチャットのみ
#discord.pyのインポート from asyncio import sleep import discord client = discord.Client() #BOTログイン処理 @client.event async def on_ready(): print('Logged in as') print(client.user.name) print(client.user.id) print('------') await client.change_presence(game=discord.Game(name='!delchat *')) # BOT動作プログラム @client.event async def on_message(message): # 送り主がBotだった場合反応したくないので if client.user != message.author: # 削除コマンド if message.content.startswith("!delchat "): #役職比較 if discord.utils.get(message.author.roles, name="admin"): # メッセージを格納 delcmd = message.content # 入力メッセージのリスト化 delcmd_ = delcmd.split() # 入力メッセージのint化 delcmd_int = int(delcmd_[1]) # 入力メッセージの単語数 delcmd_c = len(delcmd_) if delcmd_c == 2 and delcmd_int <= 50 and delcmd_int > 1: # メッセージ取得 msgs = [msg async for msg in client.logs_from(message.channel, limit=(delcmd_int+1))] await client.delete_messages(msgs) delmsg = await client.send_message(message.channel, '削除が完了しました') await sleep(5) await client.delete_message(delmsg) else: # エラーメッセージを送ります delmsg = await client.send_message(message.channel, "コマンドが間違っています。[!delchat *] *:2~50") await sleep(5) await client.delete_message(delmsg) else: # エラーメッセージを送ります delmsg = await client.send_message(message.channel, "admin権限がありません。") await sleep(5) await client.delete_message(delmsg) client.run("***")