#discord.py
#discord.py
Вопрос:
я пытаюсь заставить бота назначить роль «торговый центр» и удалить роль «учебный зал». Однако он продолжает возвращать ошибку
Игнорирование исключения в on_message Traceback (последний последний вызов): File «C:UsersfrostAppDataLocalProgramsPythonPython38-32libsite-packagesdiscordclient.py «, строка 333, в файле _run_event ожидает coro(*args, **kwargs) «D:GalaxyConflux Mastergcclient.py «, строка 89, в on_message role.id = 798193741403127818 Ошибка атрибута: объект ‘str’ не имеет атрибута ‘id’
выполняемый код выглядит следующим образом
@client.event
async def on_message(message):
if message.content.startswith(gccmd.cmd_prfx 'mall'):
role = 'Mall'
role.id = 798193741403127818
await message.author.add_roles(role.id)
я пробовал много разных подходов, но каждый из них приводил к аналогичной ошибке.
Я просто отключил часть role = ‘Mall’, но это тоже не сработало.
Как я могу преобразовать идентификатор роли в фактический идентификатор?
Большое спасибо! ~ Проблеск
Ответ №1:
вот пример, который показывает вам, как добавить роль и удалить ее.
@client.command()
async def mall(ctx):
# if prefix is '-' you'd type: -mall
await user.remove_roles(@ROLE_ID)
await user.add_roles(@ROLE_ID)
await ctx.send("Mall role added!")
@client.command()
async def home(ctx):
# if prefix is '-' you'd type: -home
await user.remove_roles(@ROLE_ID)
await user.add_roles(@ROLE_ID)
await ctx.send("Home role added!")
Если вы хотите удалить несколько ролей, вам нужно просто добавить туда все роли, которые вы хотите удалить, а затем добавить ту, которую вы хотите.
Например, если вы направляетесь в торговый центр из своего дома, он удаляет все роли, включая роль дома, и добавляет роль торгового центра.
Комментарии:
1. Для этого нужны
discord.Member
указатели типа иdiscord.Role
, иначе произойдет то же самое.2. я хочу сделать так, чтобы пользователь мог делать это самостоятельно, например, если бы они хотели роль торгового центра, они могли бы ввести что-то вроде. -goto mall предполагается, что это похоже на движение, когда они ПЕРЕХОДЯТ на новый канал и покидают старый. возможно ли это?
3. Я только что отредактировал его. Это то, что вы искали? Если нет, я думаю, вам нужно уточнить, что именно вам нужно немного больше.