Ответы пользователя по тегу Discord
  • Что мне поставить?

    fenrir1121
    @fenrir1121
    Начни с документации
    Вот документация по объекту ApplicationCommandInteraction, какой хотите атрибут такой и поставьте
    Ответ написан
    1 комментарий
  • Emb.add_field Дискорд бот python, как опустить значение value?

    fenrir1121
    @fenrir1121
    Начни с документации
    Никак, value это обязательный атрибут.
    Если нужна только строчка текста, зачем вообще .add_field, если можно вставить текст в description.
    Либо придумайте другой формат сообщения. С учетом того что вы вставили гигантское не информативное изображение лишняя строчка текста не должна стать проблемой.
    Ответ написан
    Комментировать
  • Как сделать команду уникальной для сервера дискорд бот?

    fenrir1121
    @fenrir1121
    Начни с документации
    Использовать проверки, что она вызвана на определенном сервере/определенном канале. Для этого в получаемом контексте есть атрибуты guild(сервер) и channel(канал)
    Ответ написан
  • Выдача валюты за поднятие рейтинга сервера, как сделать?

    fenrir1121
    @fenrir1121
    Начни с документации
    По тексту сообщений.
    Непосредственно выполнение команд чужих ботов вы никак не получите, так же как обычно боты не дают взаимодействовать с собой другим ботам, но читать текст сообщений и на основе него делать выводы никто не запрещал.
    Ответ написан
  • Ошибка при взаимодействии с кнопками, из за чего может быть?

    fenrir1121
    @fenrir1121
    Начни с документации
    Пожалуйста начинайте с перевода ошибок там все указано
    disnake.errors.InteractionTimedOut: Interaction took more than 3 seconds to be responded to. Please defer it using "interaction.response.defer" on the start of your command. Later you may send a response by editing the deferred message using "interaction.edit_original_message"
    Note: This might also be caused by a misconfiguration in the components make sure you do not respond twice in case this is a component.


    У вас тайм-аут из-за того что в течение 3 секунд не был дан ответ, в тексте ошибки указано что нужно делать в этом случае
    Ответ написан
    Комментировать
  • Как обработать ошибку?

    fenrir1121
    @fenrir1121
    Начни с документации
    К рабочим вышеописанным вариантам добавлю еще третий:

    Любую необработанную ошибку discord.py перенаправляет в событие on_command_error и можно еще там их обрабатывать.
    Ответ написан
    Комментировать
  • Как избавится от ошибки TypeError: Object of type Select is not JSON serializable?

    fenrir1121
    @fenrir1121
    Начни с документации
    Так, окей, я еще раз распишу чтобы все аналогичные вопросы перенаправлять сюда.

    То, что вы завете discord_slash. является пакетом discord-py-slash-command.
    Он так же как и discord_components является устаревшим и больше не поддерживается. Даже слеш-команды там реализованы не полностью, а новых компонентов нет вообще. Соответственно разбираться в ошибке, которая возникает в неподдерживаемом пакете никто не будет.

    Если вы откроете гитхаб библиотеки, то увидите, что сейчас у них отдельная, работающая независимо от discord.py библиотека interactions-py

    Если вы хотите нормально работающего бота, а не монстра франкенштейна из кусочков разных либ выберите одну библиотеку, которая поддерживает нужные вам функции и сделайте миграцию на нее.

    Что касается discord.py v1.7.3 она сильно отстала от жизни поскольку на пол года была заброшена, последнее стабильное обновление было 12 июня 2021. Актуальная dev версия с новыми компонентами устанавливается через git, а не через pip, поскольку еще находится в разработке. Следить за прогрессом разработки v2.0 можно тут

    Кроме dev ветки основной либы можно перейти на один из форков, например disnake, pycord (тоже dev из гитхаба) или отдельные библиотеки, вроде описанной выше interactions.py. У каждой свои особенности и понадобится адаптировать старый код, но так будут актуальные компоненты и предсказуемая работа в рамках одной библиотеки.
    Ответ написан
  • Как получить 5 последних сообщений пользователя на дискорд сервере?

    fenrir1121
    @fenrir1121
    Начни с документации
    Вы пишите, что нужны сообщения со всех каналов, а цикл делаете по одному каналу
    Вначале цикл по каналам, затем в каждом канале ищите сообщения
    # в команде параметром получить member: discord.Member
    for channel in ctx.guild.channels:
        async for message in channel.history(limit = 50):
            if message.author == member:
                # ваша обработка этих сообщений
    Ответ написан
    5 комментариев
  • Не работает slash команда, как исправить?

    fenrir1121
    @fenrir1121
    Начни с документации
    Четко указано, что вместо ctx.message.guild пришел None.

    Я вам уже в ваших ранних вопросах говорил, что мертвую лошадь пинать не очень хорошая практика.
    В библиотеке interactions и в discord объекты не совпадают один в один, если хотите использовать их одновременно используйте тайпхинты чтобы четко понимать объект какого типа вам приходит и пишите доп обработку ситуаций под обе библиотеки.

    Либо посмотрите уже, что обе эти версии релизнуты уже почти год назад и больше не поддерживаются и когда вы в следующий раз захотите новые фичи с них все равно надо будет слезать.
    Interactions преобразовалась в независимо работающую interactions.py, а discord.py все же ближайшее время выродиться в версию 2.0 с теми самыми блекджеком и слеш командами
    Ответ написан
  • Как сделать slash команды в когах?

    fenrir1121
    @fenrir1121
    Начни с документации
    discord.py или любой его форк с версией от 2.0.0
    Как и обычно все есть в папке examples любой библиотеки.

    Даже если взять более редкую и специфичую библиотеку, например hikari-lightbulb, там тоже будет папка examples и пример слеш команд в коге
    Ответ написан
    Комментировать
  • Как установить часовой пояс для всех datetime?

    fenrir1121
    @fenrir1121
    Начни с документации
    Открываем документацию, узнаем что есть
    os.environ['TZ'] = 'Europe/Moscow'

    И темы правильно выбирай, вопрос не имеет отношения к дискорду это базовые знания питона
    Ответ написан
    Комментировать
  • Как сделать бота, у которого нету профиля?

    fenrir1121
    @fenrir1121
    Начни с документации
    Никак. Это сообщение сформированное через Discohook, оно так отображается потому что нет отдельного значка для сообщений отправленных через вебхуки, но ботом он не является.
    Ответ написан
    Комментировать
  • Как сделать шкалу уровней?

    fenrir1121
    @fenrir1121
    Начни с документации
    1) Написать функцию, которая принимает на вход лвл и експ и рисует полоску, тестовые элементы
    2) Написать функцию, которая принимает на вход пользователя и выводит ник, аватарку, статус
    3) Написать функцию, которая объединяет все полученное в одну картинку и выводит по команде

    Разбейте задачу до элементов, которые будут Вам понятны и будет представление как их реализовать.

    Разумеется всегда можно изучить исходники аналогичных проектов на гитхабе, например Discord-levels-bot
    Ответ написан
  • Как пингануть участника/роль в EMBED?

    fenrir1121
    @fenrir1121
    Начни с документации
    Если упоминание идет внутри эмбеда пользователю не будет приходить уведомление, что его пинганули, так уж работаю эмбеды.

    Ну а если речь о визуальном отображении чтобы был кликабельный ник, то так же как в обычном сообщении выводить User.mention
    Ответ написан
    Комментировать
  • Как добавить реакции и как сделать проверку на нажатие?

    fenrir1121
    @fenrir1121
    Начни с документации
    Как добавить реакции

    emoji = <>  # вставить свой emoji
    await message.add_reaction(emoji)


    как сделать проверку на нажатие?

    Срабатывают ивенты on_reaction_add или on_reaction_remove, там свою логику описывайте

    Я вообще не понимаю как, у всех гайдов по разному.

    Потому что в разных библиотеках реализации могут отличаться. Смотрите официальные примеры под нужную вам библиотеку, все всегда есть в документации.

    Я хочу сделать страницы но не вдупляю как!

    В новых версиях 2.0.X за это отвечает ui components. Пример реализации, например под discord.py есть в репозитории
    Ответ написан
    1 комментарий
  • Где поставить await? Или как фиксануть?

    fenrir1121
    @fenrir1121
    Начни с документации
    В связи с Вашим поведением в комментариях я не укажу на конкретную строчку, но дам вам пример базового бота на disnake.
    Сопоставьте Ваши 15 строчек и найдите несоответствие.
    Ответ написан
    Комментировать
  • Как сделать два администратора в /admins?

    fenrir1121
    @fenrir1121
    Начни с документации
    Ответ на конкретный вопрос как убрать какие-то символы - посмотрите документацию по replace(), translate(), join() и что такое срез строк.

    Ответ на реальный вопрос, который вы не смогли сформулировать: не использовать список для admins, когда нужна просто строка и не делать SELECT *, когда нужен только ID
    Ответ написан
    2 комментария
  • Как разделить БД дискорд бота под разные сервера?

    fenrir1121
    @fenrir1121
    Начни с документации
    В таблицу добавить ключевое поле GUILD_ID
    Соответственно запрос изменится на:
    select = '''SELECT * FROM "users" WHERE id = %s AND guild_id = %s'''
    cur.execute(select, (member.id, guild.id))
    Ответ написан
    Комментировать