1

When I click on the inline button, it will give me a text. And with each next press, he again sends the text.

I want to make it so that when you click on a new button, the old message is deleted and a new one appears.

I hope I explained clearly :D

Just in case, I'll leave the source code :

from telebot import TeleBot  # Подключаем библиотеку
from telebot import types
import time  # Подключаем модуль времени

# Записываем токен
bot = TeleBot('CODE')

bad_words = ["жопа", "дурак", "мудак", "durak", "бля", "хуй",
             "хуя"]  # Словарь для фраз которые мы будем автоматически удалять из чата

other_lang = ["c#", "c++", "дельфи", " ява ", "java", "php", " пхп", "swift", " свифт", " go ",
              "javascript", "kotlin", " котлин", "rust", " раст ", "basic", " бейсик", " паскаль",
              "golang", "pascal", "delphi", "perl", " перл ", "1c", " делфи", " си "]
# Словарь для фраз на которыем мы будем реагировать стикером

# Еще один словарь для фраз на которыем мы будем реагировать стикером
other_bot = ["aiogram", "аиограм"]


@bot.message_handler(commands=['bot'])
def button(message):
    markup = types.InlineKeyboardMarkup(row_width=2)
    item = types.InlineKeyboardButton(
        'Купить логи ', callback_data='question1')
    item2 = types.InlineKeyboardButton(
        'Правила ‍♂️', callback_data='goodbye')
    item3 = types.InlineKeyboardButton(
        'Мануалы ', callback_data='manual')
    item4 = types.InlineKeyboardButton(
        'Развлекуха ', callback_data='game')
    markup.add(item, item2, item3, item4)

    bot.send_message(message.chat.id, 'Здравствуй, {first} {last}'.format(
        first=message.from_user.first_name, last=message.from_user.last_name), reply_markup=markup)


@ bot.callback_query_handler(func=lambda call: True)
def callback(call):
    if call.message:
        if call.data == 'question1':
            bot.send_message(call.message.chat.id,
                             '''Как купить логи? 

Шᴀᴦ 1️⃣

Пᴇᴩʙыʍ дᴇᴧᴏʍ, ʍы дᴏᴧжны ɜᴀйᴛи ʙ бᴏᴛᴀ - @reimannlogs_bot  и ᴨᴩᴏᴨиᴄᴀᴛь /start‍♂️

Шᴀᴦ 2️⃣

Нᴀжиʍᴀᴇʍ "Пᴏᴨᴏᴧниᴛь" и ᴨᴏᴨᴏᴧняᴇʍ нᴀ ᴄᴛᴏᴧьᴋᴏ,
нᴀ ᴄᴋᴏᴧьᴋᴏ ʙы хᴏᴛиᴛᴇ ᴋуᴨиᴛь ᴧᴏᴦᴏʙ.
Аᴋᴛуᴀᴧьнᴀя цᴇнᴀ ɜᴀ 1 ᴧᴏᴦ - 59 ᴩуб

Шᴀᴦ 3️⃣

Нᴀжиʍᴀᴇʍ "Куᴨиᴛь", ʙыбиᴩᴀᴇʍ "Зᴀбуᴦᴏᴩ RᴇdLinᴇ"
и "POPULAR GAMES"

Шᴀᴦ 4️⃣

Обᴩᴀбᴀᴛыʙᴀᴇʍ ᴧᴏᴦ и ᴨᴏᴧучᴀᴇʍ PROFIT!
(Мᴀнуᴀᴧ ᴨᴏ ᴏбᴩᴀбᴏᴛᴋᴇ ʍᴏжнᴏ ᴨᴏᴧучиᴛь, ᴨᴩᴏᴨиᴄᴀʙ
ᴋᴏʍᴀнду - /bot)
                             ''')

        elif call.data == 'goodbye':
            bot.send_message(call.message.chat.id,
                             '''Пᴩᴀʙиᴧᴀ чᴀᴛᴀ 

=======================

Зᴀᴨᴩᴇщᴇнᴏ: 

- ᴧюбᴀя ᴋᴏʍʍᴇᴩция ʙ чᴀᴛᴇ (ᴨᴏᴋуᴨᴋᴀ/ᴨᴩᴏдᴀжᴀ)

- уᴋᴀɜыʙᴀᴛь иᴧи ᴨᴏʍᴇчᴀᴛь дᴩуᴦиᴇ ᴋᴀнᴀᴧы иᴧи бᴏᴛы

- ᴩᴇᴋᴧᴀʍᴀ иᴧи уᴨᴏʍинᴀниᴇ ᴨᴏхᴏжих ᴩᴇᴄуᴩᴄᴏʙ/ɯᴏᴨᴏʙ/нᴇйʍᴏʙ ʙ ᴧюбᴏʍ ᴋᴏнᴛᴇᴋᴄᴛᴇ

-  ᴨᴏᴨᴩᴏɯᴀйничᴇᴄᴛʙᴏ

-  ɜᴧᴏуᴨᴏᴛᴩᴇбᴧᴇниᴇ "CAPS LOCK"

-  ʙᴇᴄᴛи ᴄᴇбя нᴇᴀдᴇᴋʙᴀᴛнᴏ ʙ чᴀᴛᴇ и ᴩᴀɜʙᴏдиᴛь "ᴄᴩᴀч"

-  ᴏᴄᴋᴏᴩбᴧᴇниᴇ "мᴏдᴇᴩᴀции/ᴨᴩᴏᴇᴋᴛᴀ/ɯᴏᴨᴀ" - бᴀн ❗️

-  ᴏᴛᴨᴩᴀʙᴧяᴛь ᴄᴋᴩиʍᴇᴩы, ᴩᴀᴄчᴧᴇнᴇнᴋу, ᴄʙᴀᴄᴛиᴋу, нᴀциɜʍ, ᴋᴏнᴛᴇнᴛ 

- ᴏɸᴏᴩʍᴧяᴛь ᴩᴀɜᴧичныᴇ ᴋᴀᴩᴛы, ᴀбуɜиᴛь ᴩᴇɸᴇᴩᴀᴧьную ᴄиᴄᴛᴇʍу, ᴄᴋᴀʍ и ᴏбʍᴀн ᴨᴏᴧьɜᴏʙᴀᴛᴇᴧᴇй

- ᴨᴩᴏᴨᴀᴦᴀндᴀ ᴨᴏᴧиᴛиᴋи

- ɸᴧуд\ᴄᴨᴀʍ ᴏдинᴀᴋᴏʙыʍи ɜᴀ ᴋᴏнᴛᴇᴋᴄᴛᴏʍ ᴄᴧᴏʙᴀʍи иᴧи ᴨᴩᴇдᴧᴏжᴇнияʍи (1 ᴨᴩᴇдуᴨᴩᴇждᴇниᴇ, ᴨᴏᴄᴧᴇ - ɯᴛᴩᴀɸ) ''')

        elif call.data == 'manual':
            bot.send_message(call.message.chat.id,
                             '''
                            Краткий мануал о том как обрабатывать логи - https://telegra.ph/Kak-obrabatyvat-logi-05-30
За привлечение новой аудитории, выдаю логи
''')

        elif call.data == 'game':
            bot.send_message(call.message.chat.id, '''
                  Вот список забавных команд 

"Спой, птичка!" - попугай чёт скажет :3
"Cкайнет восстаёт!" - До восстанет великий Скайнет!!!
            ''')


@bot.message_handler(
    content_types=['new_chat_members'])  # Хендлер описывающий поведение бота при добавлении нового пользователя
def greeting(message):  # Запуско основной функции хендлера
    # Выводим в консоль имя нового пользователя
    print("User " + message.new_chat_member.first_name + " added")
    try:  # Пытаемся выполнить команду приведеную ниже
        bot.reply_to(message, text='Приветствую тебя в нашем серпентарии. Будь вежливым, и мы постараемся тебе помочь!',
                     disable_notification=True)  # Выводим приветствие в чат
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("GreetingError - Sending again after 5 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        bot.reply_to(message, text='Приветствую тебя в нашем серпентарии. Будь вежливым, и мы постараемся тебе помочь!',
                     disable_notification=True)  # Выводим приветствие в чат


@bot.message_handler(
    content_types=['left_chat_member'])  # Хендлер описывающий поведение бота при выходе пользователя из чата
def not_greeting(message):  # Запуско основной функции хендлера
    # Выводим в консоль имя ушедшего пользователя
    print("User " + message.left_chat_member.first_name + " left")
    try:  # Пытаемся выполнить команду приведеную ниже
        bot.reply_to(message, text='Как жаль, что вы наконец-то уходите...',
                     disable_notification=True)  # Выводим прощание в чат
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("LeftError - Sending again after 5 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        bot.reply_to(message, text='Как жаль, что вы наконец-то уходите...',
                     disable_notification=True)  # Выводим прощание в чат


# Хендлер описывающий поведение бота при вводе /start
@bot.message_handler(commands=['start'])
def starting(message):  # Запуско основной функции хендлера
    try:  # Пытаемся выполнить команду приведеную ниже
        bot.reply_to(message, text='Ты мне тут не стартуй!',
                     disable_notification=True)  # Отвечаем на команду /start
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("StartingError - Sending again after 3 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        bot.reply_to(message, text='Ты мне тут не стартуй!',
                     disable_notification=True)  # Отвечаем на команду /start


# Хендлер описывающий поведение бота при вводе command1
@bot.message_handler(commands=['command1'])
def bui(message):  # Запуско основной функции хендлера
    try:  # Пытаемся выполнить команду приведеную ниже
        # Открывем стикер и присваиваем его переменной
        bui_pic = open('bui.webp', 'rb')
        bot.send_sticker(message.chat.id, bui_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем стикер
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("BuiError - Sending again after 3 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        # Открывем стикер и присваиваем его переменной
        bui_pic = open('bui.webp', 'rb')
        bot.send_sticker(message.chat.id, bui_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем стикер


# Хендлер описывающий поведение бота при вводе command2
@bot.message_handler(commands=['command2'])
def zvezda(message):  # Запуско основной функции хендлера
    try:  # Пытаемся выполнить команду приведеную ниже
        # Открывем стикер и присваиваем его переменной
        zv_pic = open('zvezda.webp', 'rb')
        bot.send_sticker(message.chat.id, zv_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем стикер
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("ZvezdaError - Sending again after 3 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        # Открывем стикер и присваиваем его переменной
        zv_pic = open('zvezda.webp', 'rb')
        bot.send_sticker(message.chat.id, zv_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем стикер


# Хендлер описывающий поведение бота при вводе command3
@bot.message_handler(commands=['command3'])
def jigurda(message):  # Запуско основной функции хендлера
    try:  # Пытаемся выполнить команду приведеную ниже
        # Открывем стикер и присваиваем его переменной
        jig_pic = open('jig.webp', 'rb')
        bot.send_sticker(message.chat.id, jig_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем стикер
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("JigurdaError - Sending again after 3 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        # Открывем стикер и присваиваем его переменной
        jig_pic = open('jig.webp', 'rb')
        bot.send_sticker(message.chat.id, jig_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем стикер


# Хендлер описывающий поведение бота при вводе help
@bot.message_handler(commands=['help'])
def helper(message):  # Запуско основной функции хендлера
    try:  # Пытаемся выполнить команду приведеную ниже
        # Отвечаем на команду /help
        bot.reply_to(message, text='Гугл в помощь!', disable_notification=True)
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("HelperError - Sending again after 3 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        # Отвечаем на команду /help
        bot.reply_to(message, text='Гугл в помощь!', disable_notification=True)


# Хендлер описывающий поведение бота при голосовом сообщении в чате
@bot.message_handler(content_types=['voice'])
def voice_msg(message):  # Запуско основной функции хендлера
    try:  # Пытаемся выполнить команду приведеную ниже
        # Открывем стикер и присваиваем его переменной
        jpg_pic = open('voice.webp', 'rb')
        bot.send_sticker(message.chat.id, jpg_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем стикер
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("Audio_msgError - Sending again after 3 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        # Открывем стикер и присваиваем его переменной
        jpg_pic = open('voice.webp', 'rb')
        bot.send_sticker(message.chat.id, jpg_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем стикер


@bot.message_handler(
    content_types=['pinned_message'])  # Хендлер описывающий поведение бота после того, как было закрепленно сообщение
def pinned_msg(message):  # Запуско основной функции хендлера
    try:  # Пытаемся выполнить команду приведеную ниже
        bot.reply_to(message, text='Ну, теперь заживем!',
                     disable_notification=True)  # Отвечаем на закрепленное сообщение
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("PinnedError - Sending again after 3 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        bot.reply_to(message, text='Ну, теперь заживем',
                     disable_notification=True)  # Отвечаем на закрепленное сообщение


# Хендлер описывающий поведение бота при добавлении аудиофайла в чат
@bot.message_handler(content_types=['audio'])
def audio_msg(message):  # Запуско основной функции хендлера
    try:  # Пытаемся выполнить команду приведеную ниже
        # Открывем изображение и присваиваем его переменной
        jpg_pic = open('002.jpg', 'rb')
        bot.send_sticker(message.chat.id, jpg_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем изображение
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("Audio_msgError - Sending again after 3 seconds!!!")
        # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
        time.sleep(3)
        # Открывем изображение и присваиваем его переменной
        jpg_pic = open('002.jpg', 'rb')
        bot.send_sticker(message.chat.id, jpg_pic, reply_to_message_id=message.message_id,
                         disable_notification=True)  # Отправляем изображение


# Хендлер описывающий поведение бота на текст в чате
@bot.message_handler(content_types=['text'])
def txt(message):  # Запуско основной функции хендлера
    for i in range(0, len(bad_words)):  # Перебираем все элементы словаря по очереди
        # Проверяем наличие каждого слова из нашего словаря в сообщении
        if bad_words[i] in message.text.lower():
            try:  # Пытаемся выполнить команду приведеную ниже
                # Удаляем сообщение
                bot.delete_message(message.chat.id, message.message_id, )
                # Выводим удаленное сообщение в консоль
                print(message.text + " delited")
            except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
                # Выводим ошибку в консоль
                print("BadWordsError - Sending again after 3 seconds!!!")
                # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
                time.sleep(3)
                # Удаляем сообщение
                bot.delete_message(message.chat.id, message.message_id)
                # Выводим удаленное сообщение в консоль
                print(message.text + " delited")

    for l in range(0, len(other_lang)):  # Перебираем все элементы словаря по очеред
        # Проверяем наличие каждого слова из нашего словаря в сообщении
        if other_lang[l] in message.text.lower():
            try:  # Пытаемся выполнить команду приведеную ниже
                # Открывем стикер и присваиваем его переменной
                get_pic = open('get_out.webp', 'rb')
                bot.send_sticker(message.chat.id, get_pic, reply_to_message_id=message.message_id,
                                 disable_notification=True)  # Отправляем стикер
            except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
                # Выводим ошибку в консоль
                print("LangError - Sending again after 3 seconds!!!")
                # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
                time.sleep(3)
                # Открывем стикер и присваиваем его переменной
                get_pic = open('get_out.webp', 'rb')
                bot.send_sticker(message.chat.id, get_pic, reply_to_message_id=message.message_id,
                                 disable_notification=True)  # Отправляем стикер

    for f in range(0, len(other_bot)):  # Перебираем все элементы словаря по очеред
        # Проверяем наличие каждого слова из нашего словаря в сообщении
        if other_bot[f] in message.text.lower():
            try:  # Пытаемся выполнить команду приведеную ниже
                # Открывем видео и присваиваем его переменной
                pss_pic = open('animation.gif.mp4', 'rb')
                bot.send_animation(message.chat.id, pss_pic, reply_to_message_id=message.message_id,
                                   disable_notification=True)  # Отправляем видео
            except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
                # Выводим ошибку в консоль
                print("AnimError - Sending again after 3 seconds!!!")
                # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
                time.sleep(3)
                # Открывем видео и присваиваем его переменной
                pss_pic = open('animation.gif.mp4', 'rb')
                bot.send_animation(message.chat.id, pss_pic, reply_to_message_id=message.message_id,
                                   disable_notification=True)  # Отправляем видео

    if message.text == 'Спой, птичка!':  # Ищем нашу фразу в тексте сообщения
        try:  # Пытаемся выполнить команду приведеную ниже
            bot.reply_to(message, text='Ща спою!')  # Отвечаем на сообщение
            # Открывем аудио и присваиваем его переменной
            sti = open('001.mp3', 'rb')
            bot.send_audio(message.chat.id, audio=sti, reply_to_message_id=message.message_id,
                           disable_notification=True)  # Отправляем аудио
        except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
            # Выводим ошибку в консоль
            print("SongError - Sending again after 3 seconds!!!")
            # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
            time.sleep(3)
            bot.reply_to(message, text='Ща спою!')  # Отвечаем на сообщение
            # Открывем аудио и присваиваем его переменной
            sti = open('001.mp3', 'rb')
            bot.send_audio(message.chat.id, audio=sti, reply_to_message_id=message.message_id,
                           disable_notification=True)  # Отправляем аудио

    elif message.text == "Cкайнет восстаёт!":  # Ищем нашу фразу в тексте сообщения
        try:  # Пытаемся выполнить команду приведеную ниже
            # Открывем изображение и присваиваем его переменной
            ver_pic = open('hqdefault.jpg', 'rb')
            bot.send_photo(message.chat.id, ver_pic, reply_to_message_id=message.message_id,
                           disable_notification=True)  # Отправляем изображение
        except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
            # Выводим ошибку в консоль
            print("VerError - Sending again after 3 seconds!!!")
            # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
            time.sleep(3)
            # Открывем изображение и присваиваем его переменной
            ver_pic = open('hqdefault.jpg', 'rb')
            bot.send_photo(message.chat.id, ver_pic, reply_to_message_id=message.message_id,
                           disable_notification=True)  # Отправляем изображение

    elif " бот " in message.text.lower():  # Ищем нашу фразу в тексте сообщения
        try:  # Пытаемся выполнить команду приведеную ниже
            bot.reply_to(message, text='Боты не то, чем кажутся...',
                         disable_notification=True)  # Отвечаем на сообщение
        except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
            # Выводим ошибку в консоль
            print("Stop_wordError - Sending again after 3 seconds!!!")
            # Делаем паузу в 3 секунды и выполняем команду приведеную ниже
            time.sleep(3)
            bot.reply_to(message, text='Боты не то, чем кажутся...',
                         disable_notification=True)  # Отвечаем на сообщение
    else:  # Если ничего не подошло
        pass  # Идём дальше


if __name__ == '__main__':  # Блок запуска бота
    try:  # Пытаемся выполнить команду приведеную ниже
        bot.polling(none_stop=True)  # Запускаем бота
    except OSError:  # Игнорируем ошибку по таймауту, если телеграмм успел разорвать соединение сс времени прошлой сесии
        # Выводим ошибку в консоль
        print("PollingError - Sending again after 5 seconds!!!")
        # Делаем паузу в 5 секунд и выполняем команду приведеную ниже
        time.sleep(5)
        bot.polling(none_stop=True)  # Запускаем бота

How do you write the code so that every time the inline button is launched, the old message is deleted and a new one appears?

FollEnsoo
  • 39
  • 1
  • 6
  • 1
    when you send message then you should get message or its ID like `msg = bot.send_message()` and you can use this `msg`to delete message. But you have to keep it in global variable to get it when you run function again. – furas Jun 13 '21 at 05:51

1 Answers1

0

This can be done by edit_message_text

Example

old = bot.send_message(message.chat.id,"some text")
bot.edit_message_text("new text here",old.chat.id,old.message_id)