Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (8)

Лучшие ответы пользователя

Все ответы (12)
  • Как сделать бота платным?

    @daveusa
    Кхм.
    Для начала создать бд, хотя именно для проверки хватит и обычного txt документа.

    И каждый раз, когда юзер нажмёт /start, проверять, есть ли его chat_id в документе(можно проверять и юзернейм, то его можно изменить, а chat_id нет)

    Если пользователя там нет, то вежливо ему предлагаем оплатить, проверяем оплату, и в случае её получения, добавляем его в тот txt.
    Ответ написан
  • Метод удаления сообщений в Telebot?

    @daveusa
    Нужно юзать метод delete_message .

    @bot.callback_query_handler(func=lambda c:True)
    def inline(callback):
        bot.delete_message(callback.message.chat.id, callback.message.message_id)


    Первым передаётся id чата, вторым id сообщения.
    Ответ написан
  • Как заставить работать два CallBack Handler в Телеграм Боте на Python?

    @daveusa
    @bot.callback_query_handler(func=lambda c: True)

    Хендлер пытается обработать все калбеки.

    @bot.message_handler(commands=["start"])
    def start_message(message):
        user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
        user_markup.row("Курсы валют", "Новости")
        bot.send_message(message.chat.id, "Добрый день", reply_markup=user_markup)
    
    @bot.message_handler(regexp="Курсы валют")
    def value_message(message):
        keyboardV = telebot.types.InlineKeyboardMarkup()
        kbv1 = telebot.types.InlineKeyboardButton(text="Доллар", callback_data="USD")
        kbv2 = telebot.types.InlineKeyboardButton(text="Евро", callback_data="EUR")
        kbv3 = telebot.types.InlineKeyboardButton(text="Фунт", callback_data="GBP")
        keyboardV.add(kbv1, kbv2, kbv3)
        bot.send_message(message.chat.id, "Выберите валюту: ", reply_markup=keyboardV)
    
    
    @bot.message_handler(regexp="Новости")
    def selectCounrty(message):
        # Клавиатура выбора стран
        keyboard = telebot.types.InlineKeyboardMarkup()
        kb1 = telebot.types.InlineKeyboardButton(text="Россия", callback_data="country1")
        kb2 = telebot.types.InlineKeyboardButton(text="Германия", callback_data="country2")
        keyboard.add(kb1, kb2)
        bot.send_message(message.chat.id, "Список стран: ", reply_markup=keyboard)
    
    
    
    @bot.callback_query_handler(func=lambda c:True)
    def inline(callback):
        print(callback.data)
    
    bot.polling()


    Вот такой код прекрасно работает.
    Я сделал вывод калбеков в консоль, а ты их просто обработай через if/elif/else.
    Ответ написан
  • Как сохранить отправленный аудио файл телеграм боту в бд?

    @daveusa
    Вот код, для проверки, является ли файл аудио(для этого введите нужные расширения в список) и возможно ли его скачать(вес < 20mb)

    need_extension = ['mp3', 'm4a'] #Сюда ввести нужные расширения
    @bot.message_handler(content_types=['document']) #Хендлер
    def test(message):
    	extension = message.document.file_name[-3:] #Определения расширения файла
    	if extension in need_extension and message.document.file_size // 1024 // 1024 < 20: #Если такое расширение нужно и вес файла < 20 mb
                    #Запись в бд
    		pass

    Приведу пример для записи в базу данных sqlite3. В которой создана таблица audio_files и 2 столбика 'extension' и 'file_id'

    con = sqlite3.connect('data_base.db')
    cursor = con.cursor()
    cursor.execute("INSERT INTO audio_files VALUES(?, ?)"(extension, message.document.file_id))
    con.commit()
    con.close()
    Ответ написан