@LimeGeeg

Как покинуть discord сервер по его идентификатору в discord.py?

Мне необходимо сделать команду ">server-leave [id сервера]", по которой discord бот будет покидать этот сервер которого id я укажу при вызове. Целый день пытаюсь решить эту легкую задачку, но все коды которые я использовал из документации / вопросов других пользователей просто не работают. Пожалуйста, помогите. Вот код который я имею, и он не рабочий:
@bot.command(aliases=['server-leave'])
async def __leave_from_server(ctx, serverid = None):

if ctx.author.id in devlist:

    if serverid == None:
        await ctx.send(embed = discord.Embed(title = "Укажите id сервера"))
    else:
        try:
            toleave = bot.get_guild(serverid)
            await bot.leave_guild(toleave)
            await ctx.send(embed = discord.Embed(title = "Успешно"))
        except:
            try:
                toleave = bot.get_guild(serverid)
                await toleave.leave()
                await ctx.send(embed = discord.Embed(title = "Успешно"))
            except:
                await ctx.send(embed = discord.Embed(title = "Ошибка"))
  • Вопрос задан
  • 330 просмотров
Решения вопроса 1
  1. Не используйте устаревшую документацию.
    59mQYWj.png
    Метода bot.leave_guild нет в приведенной библиотеке уже два года.

  2. Используйте конвертер объекта discord.Guild:
    5Udu5yr.png

  3. Зачем использовать псевдонимы команды для названия команды? Декоратор команды имеет аргумент name.

  4. Для проверки выполняющего команду в discord.py существуют проверки (checks).


DEV_LIST = [...]

def check_dev(ctx):
    """Check if command caller is dev"""
    return ctx.author.id in DEV_LIST

@bot.command(name="server-leave")
@commands.check(check_dev)
async def __leave_from_server(ctx, server: discord.Guild = None):
    """Leave from selected server"""
    if server:
        await server.leave()
    else:
        await ctx.send("You need to specify server")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы