• Disnake | Python | Реализация "Формы" как это сделать?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Реализация «Формы» как это сделать?
    Открыть документацию и посмотреть

    Реализация в плане кода. Подойдёт простой пример создания "Формы"
    Ну ладно, откроем её
    вместо тебя
    import asyncio
    import os
    
    import disnake
    from disnake.ext import commands
    
    bot = commands.Bot(command_prefix=commands.when_mentioned)
    
    class MyModal(disnake.ui.Modal):
        def __init__(self) -> None:
            components = [
                disnake.ui.TextInput(
                    label="Name",
                    placeholder="The name of the tag",
                    custom_id="name",
                    style=disnake.TextInputStyle.short,
                    min_length=5,
                    max_length=50,
                ),
                disnake.ui.TextInput(
                    label="Content",
                    placeholder="The content of the tag",
                    custom_id="content",
                    style=disnake.TextInputStyle.paragraph,
                    min_length=5,
                    max_length=1024,
                ),
            ]
            super().__init__(title="Create Tag", custom_id="create_tag", components=components)
    
        async def callback(self, inter: disnake.ModalInteraction) -> None:
            tag_name = inter.text_values["name"]
            tag_content = inter.text_values["content"]
    
            embed = disnake.Embed(title=f"Tag created: `{tag_name}`")
            embed.add_field(name="Content", value=tag_content)
            await inter.response.send_message(embed=embed)
    
        async def on_error(self, error: Exception, inter: disnake.ModalInteraction) -> None:
            await inter.response.send_message("Oops, something went wrong.", ephemeral=True)
    
    @bot.slash_command()
    async def create_tag(inter: disnake.CommandInteraction):
        await inter.response.send_modal(modal=MyModal())
    
    @bot.event
    async def on_ready():
        print(f"Logged in as {bot.user} (ID: {bot.user.id})\n------")
    
    
    if __name__ == "__main__":
        bot.run(os.getenv("BOT_TOKEN"))
    Ответ написан
    1 комментарий
  • Как сделать чтоб бот отправлял сообщения, во время обработки видео?

    fenrir1121
    @fenrir1121
    Начни с документации
    Асинхронность применима только для IO-bound задач.
    Обработка видео это CPU-bound задача, пока она происходит она блокирует цикл событий. Необходимо ее выносить в отдельный процесс с использованием multiprocessing
    Ответ написан
    Комментировать
  • Как вписать в дискорд бота команду по выдаче роли с удалением предыдущих ролей?

    fenrir1121
    @fenrir1121
    Начни с документации
    Список ролей пользователя лежит в Member.roles
    Где-то в БД храните id двух нужных ролей, читаете их оттуда, далее на том же пользователе применяете Member.add_roles и Member.remove_roles
    Ответ написан
  • Disnake непонятная ошибка. Кто может помочь?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Как верно сказано в комментариях правильным действием будет удалить этот код и переписать на кнопках.

    Событие on_raw_reaction_add и метод await bot.wait_for() относятся к низкоуровневым компонентам библиотеки и их использование оправдано только если нет других способов решения проблемы.

    Примером проблем, которые вы получаете может служить то, что вы текущим кодом во-первых будете бесконечно накапливать корутины из-за никогда не завершаемых while True, а во вторых все нажатия на реакции начнут приводить к выполнению логики
    Ответ написан
    Комментировать
  • Как отладить ошибки в коде?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    FlegYy, собственный вопрос перечитайте, вы ctrl-v нажали дважды и не затерли токен.
    В официальной документации дана инструкция по созданию токена и выдаче интентов, читать инструкции надо там. Судя по отсутствию реакции у вас не выдан MESSAGE CONTENT INTENT, а вы сделали префиксную команду вместо слеша. Остальные инструкции тоже прочтите, в том числе как логировать.

    Вы правильно описали, что код как бы рабочий. В реальности в нем в половине мест бот сломается при определенных обстоятельствах. Сколько там других людей писали такой же код, не делает его более качественным. Рассмотрите вариант фриланса, маловероятно что можете корректно реализовать задуманное.
    Ответ написан
  • Почему команды бота(disnake) не обновляются?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Почему команды бота(disnake) не обновляются?
    Потому что в коде есть какая-то ошибка, препятствующая обновлению. Например намудрили с декораторами.

    Команда работает верно, но почему-то в боте( слэш командах ) она не показывается, уже прошел день.
    Слеш-команда не может верно работать, если она не показывается. Вероятно вы сделали префикс "/", что делать нельзя, поскольку с ним слеш-команды работать не будут.

    Почему команды бота(discord.py) не обновляются?
    Во-первых для разработки объявляется тестовый сервер и обновление на нем происходит мгновенно
    bot = commands.Bot("!", test_guilds=[123456789, 987654321])

    Во-вторых есть флаг дебага sync_commands_debug, который выдаст в логи дополнительную информацию
    Ответ написан
    Комментировать
  • Не получается сохранить код в PyCharm,?

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

    fenrir1121
    @fenrir1121
    Начни с документации
    У меня имеется три файла
    Хоть 50 файлов, глобальная область видимости одна.
    Кроме того судя по приложенному коду вы сами же где-то ранее кладете пользователя в sql базу и можете откуда угодно ее читать.
    По приложеному коду не оценить как вы все спроектировали, но вероятно наиболее подходящий ответ: начните возвращать значения из функций

    нуждаюсь в этом чисто для своего развития умений программирования на python
    В этом случае нужно вначале пояснение, что делает ваша программа и зачем в ней авторизация. Учебный проект не повод делать вредные и неправильные вещи, а почему не стоит хранить пароли в открытом виде и почему не надо использовать f-строки в sql запросах дано много других ответов, которые можно найти поиском.
    Ответ написан
    Комментировать
  • Проблемы с кодом disnake?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    TypeError: Client.__init__() got an unexpected keyword argument 'help_commands'

    Жмешь на commands.Bot, проваливаешься в описание и находишь что аргумент должен зваться help_command без s
    Ответ написан
    Комментировать
  • Почему не работает функция?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Приложите логи тестом, а не скриншотом и прикладывайте их целиком.

    Однако для метода add_roles помимо HTTP ошибок есть только одно исключение, которое возникает, если у бота нет прав на выдачу роли.
    Убедитесь, что у бота есть нужные права и что роль, которую вы пытаетесь выдать находиться в списке ролей ниже, чем наивысшая из ролей бота.
    Ответ написан
    Комментировать
  • Есть ли какие то варианты вызвать деструктор принудительно кроме обязательного использования контекстного менеджера?

    fenrir1121
    @fenrir1121
    Начни с документации
    В стандартной библиотеке уже реализован shelve, который делает ровно то же самое причем тоже с помощью pickle.

    Но pickle медленный и не безопасный, я бы советовал просто настроить redis, потому что есть Redis persistence
    Ответ написан
  • Как удаленно пользоваться основным пк?

    fenrir1121
    @fenrir1121
    Начни с документации
    Чтобы использовать софт - Anydesk
    Чтобы поиграть - Moonlight

    Если у тебя большая задержка и разрывы в энидеске вероятно у тебя низкая скорость интернета.

    Каким боком тут сервер непонятно, разве что дома кто-то в этот момент тоже кто-то пользуется ПК и необходима одновременная авторизация двух пользователей.
    Ответ написан
    5 комментариев
  • Как реализовать возможность запускать пользовательский код на сервере и отдавать результат?

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

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    что делать?

    Использовать модальные окна как показано в официальный примерах, а не как сказал чат гпт или какой-то ютубер.
    Ответ написан
  • Какое значение должно быть у return, чтобы на выхлопе у функции были все числа из диапазона в строке?

    fenrir1121
    @fenrir1121
    Начни с документации
    Замените в вашем коде принты на дописывание в конец строки и делайте ее принт, но вообще в питоне можно коротко и без циклов.
    def f(start, end):
        return ''.join(map(str, range(start, end + 1)))
    print(f(5, 7))
    Ответ написан
    1 комментарий
  • Как создать экономического бота?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Текущая структура кода не предусматривает адекватного способа решения поставленных вами задач, а правила ресурса в целом не предусматривают решение чужих задач. Так что на вопрос есть три возможных ответа:
    1. Добавить любого существующего, их сотни на любой вкус
    2. Сформировать ТЗ и пойти на фриланс
    3. Выучить язык за пределами if...else..., описать модель предметной области, продумать объекты и их взаимодействие, нарисовать схему, написать тесты, разделить задачи на более мелкие подзадачи и реализовать их.
    Ответ написан
    Комментировать
  • Почему в Docker копируется сначало package*.json, а затем все?

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

    И это есть в документации: https://docs.docker.com/build/guide/layers/
    Ответ написан
    Комментировать
  • Можете дать пример как сделать персональные роли на DISNAKE?

    fenrir1121
    @fenrir1121
    Начни с документации
    1. Изучаете атрибуты и методы объектов Member, Channels и Role. Смотрите как получать роли пользователя или наоборот пользователей роли, что у них можно изменять, что вообще доступно.

    2. Декомпозируете хотелки в пошаговый алгоритм: Сделать X, затем Y, затем Z.

    3. Находите в пункте 1 методы, которые реализуют действия в пункте 2

    4. Если вашего действия нет в доступных методах вы недостаточно конкретно сформулировали задачу (вернитесь в пункт 2) или не получили нужный объект (вернитесь в пункт 1)
    Ответ написан
    Комментировать
  • Disnake не находит команду. как решить?

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

    fenrir1121
    @fenrir1121
    Начни с документации
    Доступ нужен и к телеграмму и к дискорду дальше делаете обычный pub/sub.
    В дискорде заводите бота, слушаете ивент новых сообщений в нужном канале, пересылаете их в любой брокер (банально в redis).
    В телеге заводите бота, достаете все сообщения из очереди и отправляете.
    Ответ написан