Как сделать, чтобы бот забанил участника везде, где есть бот? Discord.py

Я делаю бота в дискорде на языке python и мне нужно сделать так, чтобы если забанили пользователя на одном дискорд сервере, то бот автоматически банил на других дискорд серверах где есть этот же бот и сам пользователь. Посмотрел куча видео, но там везде пишут на 1 дискорд сервер.

Код:

@bot.command()
@commands.check(moderator)
async def бан(ctx, member : discord.Member, *, reason = None):
    await ctx.send(f'Участник под ником <@{member.id}> был забанен')
    await member.ban(reason=reason)

Ну стандартный код на бан. Так же прочитал документацию по discord.py, но не понял, наверное я глупый.


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

Автор решения: RAINGM
@bot.command()
@commands.check(moderator)
async def бан(ctx, member : discord.Member, *, reason = None):
    for guild in bot.guilds:
        for member1 in guild.members:
            if member1 == member:
                await member.ban(reason=reason)
→ Ссылка
Автор решения: JiMoon - Python

<3

@bot.command()
# @commands.check(moderator) --> Скорее всего, вы имели ввиду проверка на наличие роли.
@bot.has_any_role('moderator')
async def бан(ctx, member_ban : discord.Member, *, reason = None):
    # await ctx.send(f'Участник под ником <@{member.id}> был забанен') --> Ошибка в member.id, вы усложнили себе задачу.
    await ctx.send(f'Участник под ником {member.mention} был забанен')
    for guild in bot.guilds:
        for member in guild.members:
            if member_ban.id == member.id:
                try:
                    await member.ban(reason = reason)
                except:
                    pass
→ Ссылка
Автор решения: HellSai

Если вы хотите, чтобы только вы могли использовать эту команду (именно создатель бота) и банился только участник, который ЕСТЬ на том сервера, то вот:

def dev(ctx):
    return ctx.message.author.id == 'ваше id'

@bot.command() # Создаём команду
@commands.check(dev) # Даём разрешение только использовать её создателю бота
async def guilds_ban(ctx, user_id: int, reason = 'решение администрации'):
    for guild in bot.guilds: # Перебираем все сервера, где есть бот
        for member in guild.members: # Берём всех участников сервера
            try:
                if user_id == member.id: # Проверка: если user_id равно member.id (с сервера), то...
                    await member.ban(reason = reason) # Баним этого пользователя
            except:
                print('Произошла ошибка!')

А если хотите чтобы на ВСЕХ серверах, даже если его НЕТ, то вот:

def dev(ctx):
    return ctx.message.author.id == 'ваше id'

@bot.command() # Создаём команду
@commands.check(dev) # Даём разрешение только использовать её создателю бота
async def guilds_ban(ctx, user_id: int, reason = 'решение администрации'):
    for guild in bot.guilds: # Перебираем все сервера, где есть бот
        try:
            user = await bot.fetch_user(user_id)
            await user.ban(reason = reason) # Баним этого пользователя
        except:
            print('Ошибка!')

Проверяйте, если не будет работать, то напишите ниже!

→ Ссылка