ボットのメッセージをすべて削除するボットでコマンドを作成しようとしています。すべてのチャンネルのメッセージを繰り返し処理する方法はありますか?ボットが送信したメッセージの場合、ボットはそれを削除しますか?私はdelete_message
を理解しましたが、可能であれば、すべてのチャンネルのメッセージをどのように反復するかを理解することはできません。 次のコードは、すべてのチャネルのメッセージを反復処理ではないだろうが、著者のIDが383804325077581834
であれば、それはメッセージを削除します:チャンネル内のすべてのボットのメッセージを削除する
@bot.event
async def on_message(message):
if message.author.id == '383804325077581834':
await bot.delete_message(message)
383804325077581834
は私のボットのIDです。だから私はどのように私はすべてのチャネルのメッセージを繰り返し、私のボットによって送信されたものを削除することができます知っていると思います。どうもありがとうございます!
EDIT:これをやってみました:
@bot.command(pass_context=True)
async def delete(ctx, number):
msgs = []
number = int(number)
async for msg in bot.logs_from(ctx.message.channel, limit=number):
if msg.author.id == '383804325077581834':
msgs.append(msg)
await bot.delete_messages(msgs)
しかし、私はdiscord.ext.commands.errors.MissingRequiredArgument: number is a required argument that is missing.
ありがとうございました。しかし、今は 'UnboundLocalError:ローカル変数 'number'が代入の前に参照されているというエラーが出ます。 –
すべてのメッセージを削除してその行を取り除くことができるようにするには、番号は必要ありません。 – ADug