Как получить роль в Discord при помощи бота python?
Я делаю Дискорд бота на питон 3.8. Если написать какую-то команду в дискорде боту, то он должен автора этого сообщения "наградить" ролью. Но так не происходит. Что я делаю не так?
P.s. Бот должен давать роли при отправке ему сообщения БЕЗ РЕАКЦИЙ И КНОПОК
Вот код:
import discord
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith("$ок"):
on_member_join()
@client.event
async def on_member_join(member,message):
role = discord.utils.get(member.guild.roles, id = 'id of role')
await member.add_roles (message.author, role)
client.run("token")
Ответы (1 шт):
Автор решения: xZartsust
→ Ссылка
У меня есть мой готовый код но у меня с БД:
@commands.Cog.listener()
async def on_member_join(self, member):
cursor.execute(f'SELECT wlc_role_t_or_f FROM public."myBD" WHERE guild_id = {member.guild.id};')
on_or_off = cursor.fetchone()
conn.commit()
cursor.execute(f'SELECT wlc_role FROM public."myBD" WHERE guild_id = {member.guild.id};')
role = cursor.fetchone()
conn.commit()
role_1 = member.guild.get_role(role[0])
if f'{on_or_off[0]}' == str('True'):
await member.add_roles(role_1)
elif f'{on_or_off[0]}' == str('False'):
pass
В вашем случае будет:
@client.event()
async def on_member_join(member):
role_1 = member.guild.get_role(15171165410)# ади роли которую будет получать новый юзер при входе на сервер
await member.add_roles(role_1)
А если вы хотите что бы по команды то аналогично:
@client.command()
async def test(ctx):
member = ctx.message.author
role_1 = member.guild.get_role(15171165410)# ади роли которую будет получать юзер
await member.add_roles(role_1)