Не работает код, но ошибок в нём нет
Крч я писал код в python с библиотекой telebot и базой данных SQlite 3. После того как я написал строчку кода для получения номера телефон человека, у меня перестала работать другая часть кода, которая к текущему коду который я писал никак не связана. После выполнения этой ветки def send_faq_page_one(chat_id):
появляеться кнопка "следущая страница", но когда я на неё нажимаю ничего не происходит. Хотя у меня всё написано что должно быть
import telebot
import sqlite3
from telebot import types
db_path = "Mydatabase.db"
# Подключение к базе данных SQLite
conn = sqlite3.connect('db_path', check_same_thread=False)
cursor = conn.cursor()
# Создание таблицы пользователей
cursor.execute('''CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
telegram_id INTEGER UNIQUE,
phone_number TEXT
)''')
conn.commit()
bot = telebot.TeleBot('***')
# Функция для добавления нового пользователя в базу данных
def add_user(telegram_id, phone_number):
cursor.execute('INSERT INTO users (telegram_id, phone_number) VALUES (?, ?)',
(telegram_id, phone_number))
conn.commit()
@bot.message_handler(commands=['start'])
def welcome(message):
# Проверяем наличие пользователя в базе данных
cursor.execute('SELECT * FROM users WHERE telegram_id=?', (message.from_user.id,))
user = cursor.fetchone()
bot.send_message(message.chat.id, "Вас вітає телеграм бот")
if user is None:
# Если пользователь отсутствует в базе данных, запрашиваем номер телефона
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
btn = types.KeyboardButton(text="Надати контакт для реєстрації", request_contact=True)
markup.add(btn)
bot.send_message(message.chat.id, "Перед початком користуванням ботом, пропонуємо заєреструватися.")
else:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item5 = types.KeyboardButton("Вартість систем")
item6 = types.KeyboardButton("Часті питання")
markup.add(item5, item6)
bot.send_message(message.chat.id, "Зробіть свій вибір".format(message.from_user, bot.get_me()),
reply_markup=markup)
# Обработчик получения контакта
@bot.message_handler(content_types=['contact'])
def handle_contact(message):
# Добавляем нового пользователя в базу данных
add_user(message.from_user.id, message.contact.phone_number)
markup = types.InlineKeyboardMarkup(resize_keyboard=True)
item11 = types.InlineKeyboardButton("Вартість")
item10 = types.InlineKeyboardButton("Часті питання")
markup.add(item11, item10)
bot.send_message(message.chat.id, "Дякуємо за реєстрацію.", reply_markup=markup)
def send_faq_page_three(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item5 = types.KeyboardButton("Вартість")
item6 = types.KeyboardButton("Часті питання")
markup.add(item5, item6)
bot.send_message(message.chat.id, "Зробіть свій вибір".format(message.from_user, bot.get_me()), reply_markup=markup)
@bot.message_handler(content_types=['text'])
def handle_text(message):
if message.chat.type == 'private':
if message.text == 'Вартість':
bot.send_message(message.chat.id, "Тут будуть вартості")
elif message.text == 'Часті питання':
send_faq_page_one(message.chat.id)
else:
bot.send_message(message.chat.id, 'Не правильна комбінація')
def send_faq_page_one(chat_id):
bot.send_message(chat_id, 'Ось часті питання які нам задають та їх відповіді',
reply_markup=types.ReplyKeyboardRemove())
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Наступна сторінка", callback_data='Next page')
markup.add(item1)
bot.send_message(chat_id, '1. ...\n Відповідь:\n'
'2. ...\n Відповідь:\n'
'3. ...\n Відповідь:\n'
'4. ...\n Відповідь:', reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
try:
if call.message:
if call.data == 'Next page':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text='*Видаленно*', reply_markup=None)
send_faq_page_two(call.message.chat.id)
elif call.data == 'Start over':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text='*Видаленно*', reply_markup=None)
send_faq_page_one(call.message.chat.id)
elif call.data == 'Main':
bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text='*Видаленно*', reply_markup=None)
send_faq_page_three(call.message)
bot.answer_callback_query(callback_query_id=call.id, show_alert=False)
except Exception as e:
print(repr(e))
def send_faq_page_two(chat_id):
markup = types.InlineKeyboardMarkup(row_width=2)
item2 = types.InlineKeyboardButton("Почати спочатку", callback_data='Start over')
item3 = types.InlineKeyboardButton("Меню", callback_data='Main')
markup.add(item2, item3)
bot.send_message(chat_id, '5. ...\n Відповідь:\n'
'6. ...\n Відповідь:\n'
'7. ...\n Відповідь:\n'
'8. ...\n Відповідь:', replay_markup=markup)
# RUN
bot.polling()```
Ответы (1 шт):
Что именно не работает? Пытались ли вы обнаружить ошибку или как-то логировать события?
Чуть-чуть подправил код и заработало. Сообщите, та ли эта ошибка, с который вы столкнулись?
Я нашёл только одну ошибку, которая происходила в функции send_faq_page_two()
.
TypeError("TeleBot.send_message() got an unexpected keyword argument 'replay_markup'")
Ошибка, говорит, что вы допустили опечатку в названии аргумента вы написали replay_markup
, а правильно reply_markup
.
Ещё одна ошибка возникала из-за того, что вы должны указывать callback_data
types.InlineKeyboardButton('some text', callback_data='some_callback')
import telebot
from telebot import types
import sqlite3
bot = telebot.TeleBot('TOKEN')
db_path = "Mydatabase.db"
# Подключение к базе данных SQLite
conn = sqlite3.connect(db_path, check_same_thread=False)
cursor = conn.cursor()
# Создание таблицы пользователей
cursor.execute('''CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
telegram_id INTEGER UNIQUE,
phone_number TEXT
)''')
conn.commit()
# Функция для добавления нового пользователя в базу данных
def add_user(telegram_id, phone_number):
cursor.execute('INSERT INTO users (telegram_id, phone_number) VALUES (?, ?)',
(telegram_id, phone_number))
conn.commit()
@bot.message_handler(commands=['start'])
def welcome(message):
# Проверяем наличие пользователя в базе данных
cursor.execute('SELECT * FROM users WHERE telegram_id=?', (message.from_user.id,))
user = cursor.fetchone()
bot.send_message(message.chat.id, "Вас вітає телеграм бот")
if user is None:
# Если пользователь отсутствует в базе данных, запрашиваем номер телефона
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
btn = types.KeyboardButton(text="Надати контакт для реєстрації", request_contact=True)
markup.add(btn)
bot.send_message(message.chat.id, "Перед початком користуванням ботом, пропонуємо заєреструватися.",
reply_markup=markup)
else:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item5 = types.KeyboardButton("Вартість систем")
item6 = types.KeyboardButton("Часті питання")
markup.add(item5, item6)
bot.send_message(message.chat.id, "Зробіть свій вибір".format(message.from_user, bot.get_me()),
reply_markup=markup)
# Обработчик получения контакта
@bot.message_handler(content_types=['contact'])
def handle_contact(message):
# Добавляем нового пользователя в базу данных
add_user(message.from_user.id, message.contact.phone_number)
markup = types.InlineKeyboardMarkup()
item11 = types.InlineKeyboardButton("Вартість", callback_data='data')
item10 = types.InlineKeyboardButton("Часті питання", callback_data='callback_data')
markup.add(item11, item10)
bot.send_message(message.chat.id, "Дякуємо за реєстрацію.", reply_markup=markup)
def send_faq_page_three(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item5 = types.KeyboardButton("Вартість")
item6 = types.KeyboardButton("Часті питання")
markup.add(item5, item6)
bot.send_message(message.chat.id, "Зробіть свій вибір".format(message.from_user, bot.get_me()), reply_markup=markup)
@bot.message_handler(content_types=['text'])
def handle_text(message):
if message.chat.type == 'private':
if message.text == 'Вартість':
bot.send_message(message.chat.id, "Тут будуть вартості")
elif message.text == 'Часті питання':
send_faq_page_one(message.chat.id)
else:
bot.send_message(message.chat.id, 'Не правильна комбінація')
def send_faq_page_one(chat_id):
bot.send_message(chat_id, 'Ось часті питання які нам задають та їх відповіді',
reply_markup=types.ReplyKeyboardRemove())
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Наступна сторінка", callback_data='Next page')
markup.add(item1)
bot.send_message(chat_id, '1. ...\n Відповідь:\n'
'2. ...\n Відповідь:\n'
'3. ...\n Відповідь:\n'
'4. ...\n Відповідь:', reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
try:
if call.message:
if call.data == 'Next page':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text='*Видаленно*', reply_markup=None)
send_faq_page_two(call.message.chat.id)
elif call.data == 'Start over':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text='*Видаленно*', reply_markup=None)
send_faq_page_one(call.message.chat.id)
elif call.data == 'Main':
bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text='*Видаленно*', reply_markup=None)
send_faq_page_three(call.message)
bot.answer_callback_query(callback_query_id=call.id, show_alert=False)
except Exception as e:
print(repr(e))
def send_faq_page_two(chat_id):
markup = types.InlineKeyboardMarkup(row_width=2)
item2 = types.InlineKeyboardButton("Почати спочатку", callback_data='Start over')
item3 = types.InlineKeyboardButton("Меню", callback_data='Main')
markup.add(item2, item3)
bot.send_message(chat_id, '5. ...\n Відповідь:\n'
'6. ...\n Відповідь:\n'
'7. ...\n Відповідь:\n'
'8. ...\n Відповідь:',
reply_markup=markup)
# RUN
bot.polling()