#python #python-3.x #discord.py
Вопрос:
Я попытался настроить это событие для бота, в котором он предоставил бы роль участнику, который присоединяется. По какой-то причине он не дает роли, но и не выдает никаких ошибок.
@client.event
def on_member_join(member):
role = discord.utils.get(member.server.roles, id="868708006504833034")
await client.add_roles(member, role)
Ответ №1:
@client.event
def on_member_join(member):
role = discord.utils.get(member.server.roles, id="868708006504833034")
await client.add_roles(member, role)
С вашим кодом есть несколько проблем
- в строке 2 функция не является асинхронной, discord.py события должны быть асинхронными, поэтому замените
def
ихasync def
- в строке 3 идентификаторы всегда являются int, поэтому вы бы сделали это int, но вы даже не должны использовать
discord.utils.get
, так как вы можете просто сделатьmember.guild.get_role(id)
. Примечание: идентификатор должен быть int - в строке 4 client.add_roles устарел, он был заменен на member.add_roles. Так что вам придется переодеться
client.add_roles(member, role)
вmember.add_roles(role)
Таким образом, полный обновленный код будет
@client.event
async def on_member_join(member):
role = member.guild.get_role(868708006504833034)
await member.add_roles(role)
Комментарии:
1. Хм, не могли бы вы опубликовать полный обновленный код?
2. У вас есть какие-то намерения?
3. Да, я так думаю.
4. ну, я думаю, что это не сработает, убедитесь, что вы установили для намерения участников значение true, официальные документы о намерениях: discordpy.readthedocs.io/en/latest/intents.html . специально смотрите discordpy.readthedocs.io/en/latest/…
Ответ №2:
Идентификатор-это интигер:
role = discord.utils.get(member.server.roles, id=868708006504833034)
Попробовать это.
Ответ №3:
Используйте это:
@client.event
async def on_member_join(member):
await member.add_roles(discord.utils.get(member.guild.roles, id=868708006504833034))
Я думаю, что это может работать правильно