【发布时间】:2021-01-26 18:07:49
【问题描述】:
我希望当我们 ping 机器人时它会发送一条消息“是吗?”或者类似的带有表情符号的东西,但我不知道怎么做。那么有谁能告诉我命令吗?
Discord.py
【问题讨论】:
标签: bots discord.py
我希望当我们 ping 机器人时它会发送一条消息“是吗?”或者类似的带有表情符号的东西,但我不知道怎么做。那么有谁能告诉我命令吗?
Discord.py
【问题讨论】:
标签: bots discord.py
import discord
class MyClient(discord.Client):
async def on_ready(self):
print('Logged on as {0}!'.format(self.user))
async def on_message(self, message: discord.Message):
print('Message from {0.author}: {0.content}'.format(message))
mentions = [str(m) for m in message.mentions]
if str(self.user) in list(mentions):
text = self.text_message(message)
if text == "":
print("Bot was mentioned")
else:
print("Bot was mentioned with message", text)
def text_message(self, message: discord.Message) -> str:
raw = message.raw_mentions
content: str = message.content
for m in raw:
content = content.replace(f'<@!{m}>', '')
return content
client = MyClient()
client.run("TOKEN")
请检查文档
【讨论】:
如果您不使用 cogs,请执行此操作。
@client.event
async def on_message(message):
if client.user.mentioned_in(message):
await message.channel.send("Hmmm?")
文档:mentioned_in
【讨论】:
on_message,那么只需在其末尾添加if client.user.mentioned_in(message): await message.channel.send("Hmmm?")。如果这不起作用,请向我们展示您的代码:))
如前所述,可以使用on_message 来查看是否提到了bot。但是,除非您在末尾添加 await bot.process_commands(message),否则其他命令将停止工作。这将确保机器人在使用 on_message 处理程序后继续侦听命令。
否则,如果您希望提及作为机器人的前缀,您可以在创建客户端时将其添加到前缀函数中:
import discord
from discord.ext import commands
default_prefixes = ['!', '?', '.']
def get_prefix(bot, message):
return commands.when_mentioned_or(*default_prefixes)(bot, message)
bot = commands.Bot(command_prefix=get_prefix, intents=discord.Intents.all())
【讨论】: