#python #python-3.x #discord #bots
#python #python-3.x #Discord #боты
Вопрос:
Извините меня за мой плохой английский 🙂
У меня проблема в том, что бот Discord, над которым я работаю, не отправляет личные сообщения участникам после их присоединения. Я попробовал несколько решений, предложенных в других сообщениях о переполнении стека, но это не работает.
import discord
client = discord.Client()
@client.event
async def on_member_join(member):
print(f'Someone joined')
await member.send("You joined")
client.run("XXX")
Но функция никогда не выполняется.
Если я использую точно такой же код в команде, например ?join
, как в следующем примере, это работает!
import discord
from discord.ext import commands
client = commands.Bot(command_prefix='?')
@client.command()
async def join(ctx):
member = ctx.message.author
print(f'Someone joined')
await member.send("You joined")
client.run("XXX")
Так я ошибаюсь, думая, что on_member_join
это больше не работает? Что я делаю не так?
Спасибо за ваше время 🙂
Ответ №1:
По состоянию на discord.py версия 1.5 , Intents
для типов событий корзины должна быть указана ботом перед использованием. Для события on_member_join
необходимо установить значение intent of discord.Intents.members
True
.
Простой способ сделать это заключается в следующем:
intents = discord.Intents.default()
intents.members = True
client = commands.Bot(command_prefix='?', intents=intents)
discord.py
в версии 1.5 указано, что если намерения не указаны, разрешаются все намерения, кроме Intents.members
и Intents.presences
.
Более подробную информацию о намерениях можно найти здесь: Намерения шлюза в discord.py