質問編集履歴
5
コードを追加しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,28 +6,13 @@
|
|
6
6
|
・そのメッセージのIDを取得したい
|
7
7
|
|
8
8
|
### 前提
|
9
|
+
|
9
10
|
はじめたての初心者です。
|
10
11
|
discord.pyでbotを作っています。
|
11
12
|
|
12
13
|
・質問内容
|
13
14
|
質問内容は、[実現したいこと]の通りです。
|
14
15
|
以下のソースコードを実行しましたが、28行目が書けず困っています。
|
15
|
-
|
16
|
-
・検討したこと
|
17
|
-
①interaction.channel.last_message_idで直近のメッセージIDを取得し、これを削除する方法
|
18
|
-
|
19
|
-
または
|
20
|
-
|
21
|
-
➁interaction.channel.history()でメッセージ履歴を取得し、
|
22
|
-
メッセージが特定の文字列に合致し、
|
23
|
-
message.author と bot.user とが合致していた場合に、
|
24
|
-
メッセージIDを取得してこれを削除する方法
|
25
|
-
|
26
|
-
この二つを考えましたが、いずれの場合も、遅延などにより取得するメッセージがズレてしまわないか心配しています。
|
27
|
-
(後者は異なるユーザーが、同一のメッセージIDを取得するケースを考えました)
|
28
|
-
|
29
|
-
そこで、より確実で簡潔な方法がないか探しています。
|
30
|
-
拙い質問ですが、よろしくお願いいたします。
|
31
16
|
|
32
17
|
### 該当のソースコード
|
33
18
|
|
@@ -68,11 +53,36 @@
|
|
68
53
|
|
69
54
|
```
|
70
55
|
|
71
|
-
###
|
56
|
+
### 検討したこと
|
72
57
|
|
58
|
+
①interaction.channel.last_message_idで直近のメッセージIDを取得し、これを削除する方法
|
59
|
+
|
60
|
+
または
|
61
|
+
|
62
|
+
➁interaction.channel.history()でメッセージIDを取得してこれを削除する方法
|
63
|
+
```python
|
64
|
+
@bot.tree.command(name="ping", description="pongと返します")
|
65
|
+
async def ping(interaction: discord.Interaction):
|
66
|
+
await interaction.response.send_message('pong\nこのメッセージは5秒後に削除されます')
|
67
|
+
|
68
|
+
channel = interaction.channel
|
73
|
-
|
69
|
+
async for mes in channel.history(limit=30):
|
74
|
-
|
70
|
+
if mes.author == bot.user:
|
75
|
-
|
71
|
+
if f'{mes.content}' == 'pong\nこのメッセージは5秒後に削除されます':
|
72
|
+
mes_id = mes.id
|
73
|
+
break
|
74
|
+
|
75
|
+
message = await channel.fetch_message(mes_id)
|
76
|
+
await asyncio.sleep(5)
|
77
|
+
await message.delete()
|
78
|
+
```
|
79
|
+
|
80
|
+
|
81
|
+
この二つを考えましたが、遅延などにより取得するメッセージがズレてしまわないか心配しています。
|
82
|
+
(後者は異なるユーザーが、同一のメッセージIDを取得するケースを考えました)
|
83
|
+
|
84
|
+
そこで、より確実で簡潔な方法がないか探しています。
|
85
|
+
拙い質問ですが、よろしくお願いいたします。
|
76
86
|
|
77
87
|
### 補足情報(FW/ツールのバージョンなど)
|
78
88
|
|
4
説明を加えました
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,8 +20,8 @@
|
|
20
20
|
|
21
21
|
➁interaction.channel.history()でメッセージ履歴を取得し、
|
22
22
|
メッセージが特定の文字列に合致し、
|
23
|
-
message.author
|
23
|
+
message.author と bot.user とが合致していた場合に、
|
24
|
-
これを削除する方法
|
24
|
+
メッセージIDを取得してこれを削除する方法
|
25
25
|
|
26
26
|
この二つを考えましたが、いずれの場合も、遅延などにより取得するメッセージがズレてしまわないか心配しています。
|
27
27
|
(後者は異なるユーザーが、同一のメッセージIDを取得するケースを考えました)
|
3
考えられる問題についてより詳細に追記しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,18 +15,19 @@
|
|
15
15
|
|
16
16
|
・検討したこと
|
17
17
|
①interaction.channel.last_message_idで直近のメッセージIDを取得し、これを削除する方法
|
18
|
-
(遅延などによって、取得するメッセージがズレてしまわないかを心配しています)
|
19
18
|
|
20
19
|
または
|
21
20
|
|
22
|
-
➁interaction.channel.historyでメッセージ履歴を取得し、
|
21
|
+
➁interaction.channel.history()でメッセージ履歴を取得し、
|
23
|
-
特定の文字列
|
22
|
+
メッセージが特定の文字列に合致し、
|
24
|
-
|
23
|
+
message.author と bot.user とが合致していた場合に、
|
24
|
+
これを削除する方法
|
25
25
|
|
26
|
+
この二つを考えましたが、いずれの場合も、遅延などにより取得するメッセージがズレてしまわないか心配しています。
|
27
|
+
(後者は異なるユーザーが、同一のメッセージIDを取得するケースを考えました)
|
28
|
+
|
26
|
-
こ
|
29
|
+
そこで、より確実で簡潔な方法がないか探しています。
|
27
30
|
拙い質問ですが、よろしくお願いいたします。
|
28
|
-
|
29
|
-
追記:➁の方法で、message.author が bot.user と合致していた場合にのみ、削除を実行する方法を思いつきました。ほとんど解決していますが、もう少しスマートな方法があるならば、教えていただきたいです。
|
30
31
|
|
31
32
|
### 該当のソースコード
|
32
33
|
|
2
検討案に追記しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -25,6 +25,8 @@
|
|
25
25
|
|
26
26
|
この二つを考えましたが、より確実で簡潔な方法がないか悩んでいます。
|
27
27
|
拙い質問ですが、よろしくお願いいたします。
|
28
|
+
|
29
|
+
追記:➁の方法で、message.author が bot.user と合致していた場合にのみ、削除を実行する方法を思いつきました。ほとんど解決していますが、もう少しスマートな方法があるならば、教えていただきたいです。
|
28
30
|
|
29
31
|
### 該当のソースコード
|
30
32
|
|
1
誤字を訂正しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,7 +7,6 @@
|
|
7
7
|
|
8
8
|
### 前提
|
9
9
|
はじめたての初心者です。
|
10
|
-
拙い質問ですが、よろしくお願いいたします。
|
11
10
|
discord.pyでbotを作っています。
|
12
11
|
|
13
12
|
・質問内容
|
@@ -24,7 +23,8 @@
|
|
24
23
|
特定の文字列と合致したメッセージからIDを取得し、これを削除する方法
|
25
24
|
(ユーザーが投稿したメッセージがたまたま指定した文字列と合致した場合に、誤って削除しまうことを心配しています)
|
26
25
|
|
27
|
-
この二つを
|
26
|
+
この二つを考えましたが、より確実で簡潔な方法がないか悩んでいます。
|
27
|
+
拙い質問ですが、よろしくお願いいたします。
|
28
28
|
|
29
29
|
### 該当のソースコード
|
30
30
|
|