質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2260閲覧

discord.py on_message_deleteでの削除したユーザーのチェック方法

sglre6355

総合スコア2

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/17 19:43

編集2021/04/17 19:47

前提・実現したいこと

discord.pyでbotを作成しています。on_message_deleteを使ってメッセージが削除された際に特定のチャンネルにメッセージを送信するようにしました。ただ、後々Botがメッセージを一括削除する機能も加えたいのでBotが削除した場合は反応しないようにしたいです。

該当のソースコード

discord.py

1@client.event 2async def on_message_delete(message): 3 embedVar = discord.Embed(title='メッセージが削除されました。', description='チャンネル:' + str(message.channel), color=0xE74C3C) 4 embedVar.add_field(name=variables.embed_bar, value=f'\n{str(message.author)}' + 'によって送信されたメッセージ: 『' + 5 str(message.content) + '』が削除されました。') 6 channel = client.get_channel(variables.channel_id_delmsg) 7 await channel.send(embed=embedVar)

試したこと

下記のコードを使ってBotか否かチェックしようとしましたがメッセージそのものの送信者を取得してしまい想定通りに動きませんでした。

Python

1if message.author.bot: 2 return

また、監査ログ(AuditLog)のAPIを使って削除したユーザーがBotか否かチェックするコードを書きましたがBotのアクティビティは監査ログに記録されないようでこれもまた想定の通り動きませんでした。

補足情報

動作環境:
discord.py 1.7.1
Python 3.6.9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

実際には、botの動作が監査ログに表示されないのではなく、監査ログの更新が遅いのが原因です。
また、回答にならないのかもしれませんが、現状でdiscord.pyのon_message_deleteからはメッセージを削除した人が取得できません。
昔、「しばらく待って削除した人を監査ログで確認してから投稿する」というシステムを思いつきましたが、実装したことがないので、どれぐらいのラグでどのようなコードになるのかはここに書けません。

投稿2021/04/19 14:41

yaakiyu01

総合スコア68

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

上の方の情報は古いかもしれません。現在メッセージを削除した人の取得は可能です。
しかし、削除したメッセージは表示させることができません。

投稿2023/08/11 16:21

mu_7777

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問