discord.py - Конфликт трёх функций. Как поправить?
У меня в боте конфликтуют две команды и ивент. Все они работают исправно по отдельности, но если не закомментировать ивент (код ниже будет), то команды перестают работать, роль не выдаётся и не забирается, не отправляется сообщение от бота. При этом в консоли не показывается никаких ошибок. Если закомментировать ивент, то команды начинают работать исправно. Как сделать так, чтобы всё это работало вместе?
@client.command()
@commands.has_role("Крутая роль")
async def add_crole(ctx, member: discord.Member):
role = member.guild.get_role(990654610282803311)
await member.add_roles(role)
await ctx.send(f'Крутая роль выдана {member.mention}')
@client.command()
@commands.has_role("Крутая роль")
async def rem_crole(ctx, member: discord.Member):
role = member.guild.get_role(990654610282803311)
await member.remove_roles(role)
await ctx.send(f'Крутая роль снята у {member.mention}')
#тот самый ивент, при котором если закоментировать его, начинают работать две команды выше
@client.event
async def on_message(message):
guild = client.get_guild(665116256231489548)
member = message.author
role = guild.get_role(990654610282803311)
channel = client.get_channel(990654965649399829)
if message.channel.id != 990654965649399829:
return
if message.author == client.user:
return
if role not in member.roles:
await message.delete()
await channel.send(f'{member.mention}, тебе не разрешено писать в этот канал.')
print(f'{member} попатался сказать "{message.content}", но не имеет прав на разговор в канале крутых.')
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
Добавьте в on_message() строку для проверки наличия команды в сообщении
await client.process_commands(message)
Подробнее — бот игнорирует команды