代码:
import discord
class MyClient(discord.Client):
async def on_ready(self):
print('Logged in as')
print(self.user.name)
print(self.user.id)
print('------')
async def on_message(self, message):
words = [] # List of words to look for
if message.author.id == self.user.id:
return
for i in words:
if i in message.content.lower():
await message.channel.send(f"Hey <@{message.author.id}>, i have noticed that in your message is a word on a list")
break
await message.add_reaction("✅")
await client.wait_for("reaction_add")
await message.delete()
client = MyClient()
client.run("TOKEN")
我怎样才能让机器人对自己的消息添加反应,如果用户使用它删除自己的消息 我确实在寻找答案,但上帝是 discord.py 乱七八糟的,我看到了 6 个不起作用的答案,而且所有答案似乎都使用了不同的模块
如果答案很容易找到,我深表歉意,但我就是找不到
答案 0 :(得分:0)
首先,您应该始终尝试在文档 (discord.py
documentation) 中找到答案。 (题外话:不是 discord.py
很乱;很可能是您用来查找答案的方法很乱。)
TextChannel.send()
method 返回发送的消息。因此,您可以将该返回值分配给一个变量。
对于另一个问题,有一个事件侦听器可以检测消息删除,on_message_delete()
import discord
class MyClient(discord.Client):
async def on_ready(self):
...
async def on_message(self, message):
words = []
if message.author.id == self.user.id:
return
for i in words:
if i in message.content.lower():
sent_message = await message.channel.send(
f"Hey {message.author.mention}, I have noticed that in your message is a word on a list"
)
break
await sent_message.add_reaction("reaction")
await message.add_reaction("✅")
await client.wait_for("reaction_add")
await message.delete()
async def on_message_delete(self, message):
# Do stuff here
client = MyClient()
client.run("TOKEN")
(附带说明,您可以使用 Member.mention
来提及/ping 成员,而不是 "<@{message.author.id}>"
。)
答案 1 :(得分:0)
在我看来,最好在事件方法上方使用 @client.event
方法装饰器,而不是将它们放在它们自己的类中。您可以在顶部将客户端对象声明为 client=discord.Client()
,然后将 @client.event
放在事件处理方法的上方。 on_reaction_add 方法可以有reaction 和message 参数来响应。