#python #discord #discord.py
#python #Discord #discord.py
Вопрос:
Если я делаю что-то подобное if message.content.startswith('hello'):
, это работает нормально.
Однако я не могу найти способ заставить его работать для пингов. Я попробовал идентификатор и имя бота. Мой код с идентификатором бота:
@client.event
async def on_message(message):
await client.process_commands(message)
if message.content.startswith('<@741352621826375781>'):
embed = discord.Embed(
colour = discord.Colour.red())
embed.add_field(name='Hello', value='''My prefix is `.`, type `.help` for help.''', inline=False)
await message.channel.send(embed=embed)
Кто-нибудь может помочь?
Ответ №1:
Вот немного улучшенная версия Sofia
@client.event
async def on_message(message):
# Adding `<!@{id_here}>` so it's gonna work whether it's mentioned by nick or simply by the name
if message.content in [f'<!@{client.user.id}>', f'<@{client.user.id}>']:
await message.channel.send('Hello there')
await client.process_commands(message)
Ответ №2:
Это должно устранить вашу проблему, причина, по которой ваш код не работал, заключается в ошибке атрибута.
@client.event
async def on_message(message):
if str(message.content) == '<@741352621826375781>':
await message.channel.send('Hello ?')
await client.process_commands(message)
Ответ №3:
Существует более простой способ проверить, был ли бот упомянут в сообщении или нет.
@client.event
async def on_message(message):
if client.user in message.mentions:
await message.channel.send("Hello!")