2017-12-02 5 views
0

ボットのメッセージをすべて削除するボットでコマンドを作成しようとしています。すべてのチャンネルのメッセージを繰り返し処理する方法はありますか?ボットが送信したメッセージの場合、ボットはそれを削除しますか?私は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.

答えて

0
@bot.command(pass_context=True) 
async def delete(ctx): 
    msgs = [] 
    async for msg in bot.logs_from(ctx.message.channel): 
     if msg.author.id == '383804325077581834': 
      msgs.append(msg) 
     await bot.delete_messages(msgs) 

あなたからのメッセージの数を削除するだろう必要な数のパラメータを使用してみましたコマンドをエラーが出ますチャネル。
制限が渡されない場合、logs_from関数はそのチャネルからすべてのメッセージを削除します。

編集:数、whoopsを削除するのを忘れました。

+0

ありがとうございました。しかし、今は 'UnboundLocalError:ローカル変数 'number'が代入の前に参照されているというエラーが出ます。 –

+0

すべてのメッセージを削除してその行を取り除くことができるようにするには、番号は必要ありません。 – ADug

関連する問題