Ошибка в коде бота telebot
import telebot
import random
from telebot import types
bot = telebot.TeleBot('TOKEN');
@bot.message_handler(commands=['start'])
def love (message):
bot.send_message(message.chat.id, 'Диана, я тебя люблю?')
@bot.message_handler(content_types=['text'])
def ds (message):
markup = types.InlineKeyboardMarkup()
item1 = types.InlineKeyboardButton('Фото', callback_data='yes')
item2 = types.InlineKeyboardButton('Милые слова', callback_data='no')
markup.add(item1, item2)
bot.send_message(message.chat.id, text='Выбрать действие:', reply_markup=markup)
@bot.callback_query_handler(func=lambda call:True)
def callback(call):
if call.message:
if call.data == 'yes':
x=random.randint(1,9)
if x==1:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 1')
if x==2:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 2')
if x==3:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 3')
if x==4:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 4')
if x==5:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 5')
if x==6:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 6')
if x==7
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 7')
if x== 8
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 8')
if x==9
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 9')
elif call.data == 'no':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Пока друг')
bot.polling(none_stop=True, interval=0)
Ответы (3 шт):
Автор решения: Michael Clifford
→ Ссылка
Не могли бы указать саму ошибку?
Я так понимаю проблема в конструкции if'ов, которая здесь замудрена.
Обратите внимание на все, что идёт после if x == 6:, ваша конструкция "съехала" и вы забыли про :.
if x == 7:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 7')
if x == 8:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 8')
# далее по смыслу
Автор решения: Giga_Bird
→ Ссылка
я решил твою проблему и слегка подправил код. Работает без ошибок.
import telebot
import random
from telebot import types
bot = telebot.TeleBot('токен');
@bot.message_handler(commands=['start'])
def love (message):
bot.send_message(message.chat.id, 'Диана, я тебя люблю?')
markup = types.InlineKeyboardMarkup()
item1 = types.InlineKeyboardButton('Фото', callback_data='yes')
item2 = types.InlineKeyboardButton('Милые слова', callback_data='no')
markup.add(item1, item2)
bot.send_message(message.chat.id, text='Выбирай:', reply_markup=markup)
@bot.callback_query_handler(func=lambda call:True)
def callback(call):
if call.message:
if call.data == 'yes':
x=random.randint(1,9)
if x==1:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 1')
if x==2:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 2')
if x==3:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 3')
if x==4:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 4')
if x==5:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 5')
if x==6:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 6')
if x==7:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 7')
if x==8:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 8')
if x==9:
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Текст 9')
elif call.data == 'no':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Пока друг')
bot.polling(none_stop=True, interval=0)
Автор решения: ПИТОНИСТ версия-3-8
→ Ссылка
Я уже давал ответ! Ошибка в коде telebot Хорошо, продублирую
У Вас огромные проблемы с отступами. К тому же, ваш код можно заметно сократить (всё работает, проверил):
import telebot
import random
from telebot import types
sl={
'1':'текст1',
'2':'текст2'
}
bot = telebot.TeleBot('5011985177:AAF-fiMp7siTDaCnC8y1BH4eax1dM-hfzEI');
@bot.message_handler(commands=['start'])
def love (message):
bot.send_message(message.chat.id, 'Диана, я тебя люблю?')
@bot.message_handler(content_types=['text'])
def ds (message):
markup = types.InlineKeyboardMarkup()
item1 = types.InlineKeyboardButton('Фото', callback_data='yes')
item2 = types.InlineKeyboardButton('Милые слова', callback_data='no')
markup.add(item1, item2)
bot.send_message(message.chat.id, text='Выбрать действие:', reply_markup=markup)
@bot.callback_query_handler(func=lambda call:True)
def callback(call):
if call.message:
if call.data == 'yes':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= sl[str(random.randint(1,9))])
elif call.data == 'no':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text= 'Пока друг')
bot.polling(none_stop=True, interval=0)
Добавляйте в sl новые значения от 1 до 9, изменяйте тексты.