Ответы пользователя по тегу Боты
  • Как объединить aiogram и pyrogram?

    InternetMaster
    @InternetMaster
    Интернет
    Насчет использования pyrogram для бота и как клиент уже подсказали, но если все же нужно - то советую смотреть в сторону синхронных версий pyrogram. В текущих версиях - такое не поддерживается. Нужно либо использователь telethon (sync версию) либо pyrogram прошлых версий, когда он ещё не был асинхронным
    Ответ написан
    Комментировать
  • Как настроить telebot на использование локального сервера?

    InternetMaster
    @InternetMaster
    Интернет
    Кстати telegram-bot-api довольно ресурсоёмкая штука, я бы избегал этого.

    Отправлял бы файл через telethon/pyrogram по максимальным лимитам телеграма (2 GB), а потом по file_id отправлял бы его нужным пользователям
    Ответ написан
  • Как 2 одинаковые функции использовать в разных местах [aiogram]?

    InternetMaster
    @InternetMaster
    Интернет
    Ну во первых вложенные декораторы это не клёво, советую так не делать.

    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)

    Здесь можно row_width не писать, ведь по умолчанию это 3, вам подходит.

    первая стоит раньше второй, и когда нужно проверить регион в сообщении, то вызывается функция которая проверяет опыт (первая)
    как их вызывать по отдельности?


    Ну конечно вызывается та, которая стоит первая. Она вызывается даже если пользователь введёт число, независимо от того, нужно ли его сейчас вводить.

    А решение простое - конечный автомат (он же машина состояний). State в aiogram
    Ответ написан
    Комментировать
  • Не могу проверить отправленное сообщение на тип введенных данных [aiogram]?

    InternetMaster
    @InternetMaster
    Интернет
    Ну во-первых это часть кода, нету даже самого Qnnaire.
    Нету, ошибки которая выдается (раз ты говоришь что не работает, только перезапустить)

    Но даже так все-равно не работает фильтр

    Какой фильтр?

    Кстати убери лямбду в декораторе над функцией taxi_exp, это ненужное отнимание ресурсов вычислительной техники, ведь если введено не число, его отловит функция выше
    Ответ написан
  • Есть ли бот, удаляющий все reply (ответы на сообщения)?

    InternetMaster
    @InternetMaster
    Интернет
    Думаю, что готового бота такого нет, либо это какая-то из функции уже имеющихся ботов по слежению за порядком в чатах. Надо чекать.

    Предлагаю вам написать такого бота самостоятельно, это займет буквально 10 строчек кода Python.
    Ответ написан
    Комментировать
  • Как работать в с клавиатурой в телеграм боте?

    InternetMaster
    @InternetMaster
    Интернет
    Без полного переписывания кода не обойтись.
    Самый простой вариант, это сделать JSON-словарь, и доставать по ключу.

    Пример:
    {"hello": {"ru": "Приветствуем в нашем боте!", "en": "Welcome to our bot!"}, "game_start": {"ru": "Начните новую игру.", "en": "Start a new game."}}


    Кстати, как подсказали некоторые индивиды, по типу Владимир Ермак либо Максим Ушаков, постоянное обращение к переводчику по API не есть хорошо. Постоянно отсылать запросы, и переведенный текст получать назад (каждый раз!), тем более это один и тот же текст, нецелесообразно. Представить сколько это лишнего времени и ресурсов занимает
    Ответ написан
    Комментировать
  • Как сделать так чтобы бот реагировал на сообщения внутри текста?

    InternetMaster
    @InternetMaster
    Интернет
    Regexp твое спасение в том числе к if "" in ...
    Ответ написан
    Комментировать
  • Как сделать перезапуск бота по нажатию кнопки?

    InternetMaster
    @InternetMaster
    Интернет
    По сути это кнопка самоуничтожения всего от пользователя. То есть, нужно удалить абсолютно все данные, которые бот знает о пользователи (в основном в базе данных), и создать все заново.
    Ответ написан
    Комментировать
  • Aogram Почему бот не отвечает на сообщение?

    InternetMaster
    @InternetMaster
    Интернет
    Все хорошо, но почему используется асинхронный aiogram, и неасинхронный sqlite3?
    Ответ написан
    Комментировать
  • Как деплоить Телеграм-бота с базой данный?

    InternetMaster
    @InternetMaster
    Интернет
    Ты как раз выбрал самую простую для деплоя базу (SQLite). Там нужно просто перенести файл baza.db (baza.sqlite) на сервер и все! sqlite3 идет по умолчанию в python, ничего устанавливать не надо!

    Например, MYSQL нужно установить, настроить root вход, потом создать пользователя, раздать права, создать базу данных, сделать дамп, загрузить его.
    Ответ написан
    Комментировать
  • Ошибка записи данных из бота в файл?

    InternetMaster
    @InternetMaster
    Интернет
    with open('C:\\Vash\\Put\\K\\Papke\\nuzhnoe_nazvanie.txt', 'a+') as file:
        file.write('Необходимый для записи текст')
        file.close()
    print('All done!')
    Ответ написан
    Комментировать
  • Есть ли в aiogram аналог "bot.register_next_step_handler" от telebot?

    InternetMaster
    @InternetMaster
    Интернет
    Нет, такого нет. Хотя есть State, можно с ней разобраться.

    Ссылку прилагаю: https://docs.aiogram.dev/en/latest/examples/finite...
    Ответ написан
    Комментировать
  • Как подключить калькулятор криптовалют к боту?

    InternetMaster
    @InternetMaster
    Интернет
    Нужно использовать API сервисов которые предоставляют курс нужной криптовалюты.
    Ответ написан
    Комментировать
  • Ошибка базы данных в телеграм боте. Как решить?

    InternetMaster
    @InternetMaster
    Интернет
    Попробуй написать в начале кода:
    from golova import mozgi

    А если серьезно, то где код, где файл database?
    Ответ написан
    Комментировать
  • Как сделать пригласить в чат через URL кнопку?

    InternetMaster
    @InternetMaster
    Интернет
    Это посредством ссылки t.me/share.

    Использование: t.me/share/url?url=&text=hello

    В text= можно подставить любой текст, которым вы хотите поделиться.
    Можно и url= поставить ссылку на любой сайт каким хотите поделиться, например: t.me/share/url?url=telegram.org&text=hello

    Но ссылки без url (как в начале) не работают например, в Telegram Desktop, а только в мобильных приложениях.
    Ссылки с url, работают везде (кроме Web, где это не работает вообще)
    Ответ написан
    3 комментария
  • Почему не обрабатывается следующий handler?

    InternetMaster
    @InternetMaster
    Интернет
    Потому что у тебя обработчик команды /go находится ниже обработчика текста. Команда /go относится к тексту, если обработчик не ловит эту команду раньше текста. Просто поднимите обработчик команды.

    @bot.message_handler(commands=['start'])  
    def welcome(message):
        sti = open('imagine/sticker.webp', 'rb')
        bot.send_sticker(message.chat.id, sti)
    
        #КЛАВИАТУРА 1
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard =True)
        item = types.KeyboardButton("\N{world map}")
    
        markup.add(item)
    
        bot.send_message(message.chat.id, "Привет! /help".format(message.from_user,bot.get_me()),
                         parse_mode='html', reply_markup=markup)
    
    @bot.message_handler(commands=['help'])
    def hi1(message):
        bot.send_message (message.chat.id, "Наберите команду /go или /we")
            
    @bot.message_handler(commands=['go'])
    def go(message):
        
        #КЛАВИАТУРА 2
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard =True)
        item1 = types.KeyboardButton("\N{baby}")
        item2 = types.KeyboardButton("\N{girl}")
        item3 = types.KeyboardButton("\N{man}")
    
        markup.add(item1, item2, item3)
        
        bot.send_message(message.chat.id, "Возраст?", reply_markup=markup)
        bot.register_next_step_handler(go1)
    
    @bot.message_handler(content_types=['text'])
    def hi(message):
        if message.chat.type == 'private':
            if message.text == '\N{world map}':
                 mesg = bot.send_message(message.chat.id, 'наберите команду /go')
                 if message.text == '/go':
                     bot.register_next_step_handler(mesg, go)
            else:
                bot.send_message(message.chat.id, 'Не знаю, что и ответить \N{anguished face} \nНабери команду /help, чтобы ознакомиться со списком команд')
    
    
    def go1(message):
        if message.chat.type == 'private':
            if message.text == '\N{baby}':
    
                 #КЛАВИАТУРА 3
                markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard =True)
                item1 = types.KeyboardButton("игры")
                item2 = types.KeyboardButton("деньги")
                item3 = types.KeyboardButton("телки")
    
                markup.add(item1, item2, item3)
            
                bot.send_message(message.chat.id, 'Окей, кого вы любите больше?')
    Ответ написан
    Комментировать
  • Aiogram. Не работает рассылка. как исправить?

    InternetMaster
    @InternetMaster
    Интернет
    Напоминаю, что нужно строго соответствовать пункту 3.8 правил.

    А ответ на вопрос - пишет, что чат не найден. Возможно у вас в базе нет пользователей вообще, или в качестве user_id вернулось что то другое, хотелось бы видеть ответ от базы, чтобы понять. Возможно вернулось [(None), (None), (None)] или тому подобное.

    Также вы не реализовали механизм задержки при рассылке. Это надо, чтобы не упереться в лимит - 30 сообщений в секунду, сделайте это.
    Ответ написан
    Комментировать
  • Как создать психологический тест на телеграм боте?

    InternetMaster
    @InternetMaster
    Интернет
    Ну начнем с того, что вы не указали библиотеку, но можно понять что у вас PyTelegramBotAPI по bot.register_next_step_handler и общей сложности вопроса.

    Думаю, может вы всерьез про оператор сравнения не слышали.

    def lala(message):
        if kolvoLet == 0: # На самом деле, можно и не делать, если возраст не привязан к ответам, просто в вопросе было 0 лет
            if chtoTamUTebya == 'любишь играть':
                pass # Здесь соответственно на «любишь играть»
            elif chtoTamUTebya == 'любишь петь':
                pass # Здесь соответственно на «любишь петь»
            # И попер так дальше по всем вариантам.
    Ответ написан
    3 комментария
  • Можно ли как-то просто и быстро поднять Telegram Local Bot API Server в Docker Compose (лучше всего - в Laradock) - как именно?

    InternetMaster
    @InternetMaster
    Интернет
    Может, эффективней открыть порт чтобы присылались webHook на ваш компьютер?
    Ответ написан
  • Хранение картинок БОТ-магазин?

    InternetMaster
    @InternetMaster
    Интернет
    У телеграм есть file_id для каждой фотографии/видео/файла и т.д. Лишь раз отправив в боте картинку кому-нибудь телеграм тебе вернёт file_id этой фотографии. Потом вместо того, чтобы хранить фото у себя, просто записываешь file_id и отсылаешь в качестве фото file_id. Это максимально удобно.
    Ответ написан
    Комментировать