discord.py авто-выдача ролей при подключении нового участника сервера

Мне надо, чтобы при подключении участника ему выдавалась определенная роль. В интернете находил, но у меня не работало. Вот код (без команды на выдачу ролей):

import discord

client = discord.Client()

class MyClient(discord.Client):
    async def on_ready(self):
        # bot connection
        print('Присоеденился {0}!'.format(self.user))

    
    async def on_message(self, message):
        # so that the bot does not display its own messages
        if message.author == client.user:
            return
        # displaying messages from the chat
        if message.content.startswith(''):
            await message.channel.send(f'{message.author} написал {message.content}')

# bot launch
client = MyClient()
client.run('TOKEN')

Если не сложно, объясните еще как работает выдача ролей, а то практически ничего не понимаю в этой библиотеке.


Ответы (1 шт):

Автор решения: jillstr
from discord.ext import commands
import discord

bot = commands.Bot(command_prefix='', intents=discord.Intents.all())


@bot.event
async def on_ready():
    print("Bot started")


@bot.event
async def on_message(self, message):
    # so that the bot does not display its own messages
    if message.author == bot.user:
        return
    # displaying messages from the chat
    if message.content.startswith(''):
        await message.channel.send(f'{message.author} написал {message.content}')


@bot.event
async def on_member_join(member):
    role = member.guild.get_role(role_id=id_роли)
    await member.add_roles(role)


bot.run("Токен")

Прочитать про функцию add_roles, можно в документации.

Зайдите на сайт и выберите своего бота, после включите эти 2 пункта(Они находятся во вкладке Bot). введите сюда описание изображения

→ Ссылка