Ответы пользователя по тегу Боты
  • Как сделать так, чтобы бот считал сообщения различных пользователей и выводил их отдельно?

    Использовать Counter из стандартной библиотеки collections: https://docs.python.org/3/library/collections.html...

    from collections import Counter
    
    ...
    
    msg_count = Counter()
    
    @client.event
    async def on_message(msg):
        if msg.author == client.user:
            return
        global msg_count
        msg_count[msg.author.id] += 1
        print(f"Message by {msg.author}: {msg.content}")
    
    ...
    Ответ написан
    Комментировать
  • Как сделать проверку на роль?

    Проверять нужно на наличие объекта роли:
    @commands.command()
    async def role(ctx):
        role = ctx.bot.get_role(719997201283022879)  # Получаем объект роли по ID
        if role in ctx.author.roles:
            await ctx.send("\N{WHITE HEAVY CHECK MARK}"}  # ✅
        else:
            await ctx.send("\N{CROSS MARK}")  # ❌
    Ответ написан
    Комментировать
  • Discord.py bot ошибка роли?

    MissingRequiredArgument означает что команда не получила необходимый аргумент.

    Для команды написанной в вашем примере требуется указать пользователя.

    Примечание: [p] - префикс указанный для вашего бота
    [p]вип - вернет ошибку
    [p]вип DiscordTag#0000 - не вернет, в случае если пользователь с тегом DiscordTag#0000 существует на сервере

    Примечание: pass_context=True - устаревший кусок кода, на текущей версии Discord.py такого аргумента у конструктора команд нет, Context передаётся в команду всегда
    Примечание: await ctx.channel.purge(limit = 1) - я так предполагаю, этот участок кода вами используется для удаления сообщения с командой. Если это так, рекомендую заменить его на await ctx.message.delete() во избежание (возможного) "racing condition"

    Примечание
    Почему у меня создается ощущение, что где-то появился очень кривой русскоязычный туториал по ботам на discord.py?
    Кривой - потому что с упоминанием pass_context и purge для удаления сообщений автора
    Ответ написан
    Комментировать
  • Как сделать рассылку сообщений дискорд ботом?

    Просто используйте метод "send" на пользователе

    @commands.has_permissions(administrator = True)
    @client.command()
    async def unban(ctx, *):
        await ctx.message.delete() # Для удаления сообщения с командой, если в оригинале подразумевалось это
     
        banned_users = await ctx.guild.bans()
     
        for ban_entry in banned_users:
            user = ban_entry.user
            await ctx.guild.unban(user)
            await ctx.send(f"Добро пожаловать. Снова. {user.mention}")
            await user.send("Божество услышало твой зов, теперь снова можешь вернуться :3")


    Примечание: Бот сможет отправить сообщение пользователю только если с пользователем у бота есть общий сервер
    Примечание: "pass_context=True" - устаревший кусок кода, на текущей версии Discord.py такого аргумента у конструктора команд нет, Context передаётся в команду всегда
    Ответ написан
    Комментировать
  • Какие необходимо соблюсти условия для приглашения бота на сервер Discord?

    Для добавления бота на сервер, вы должны иметь права "Управление сервером" на данном сервере
    AQFYbWn.png

    У владельца сервера все права есть вне зависимости от ролей. Проверьте в тот ли аккаунт вы залогинены в браузере.
    Ответ написан
    Комментировать