import telebot
import datetime
import schedule
import time
# Введите здесь токен вашего бота
TOKEN = 'YOUR_BOT_TOKEN'
# Создаем экземпляр бота
bot = telebot.TeleBot(TOKEN)
# Функция, которая будет вызываться каждый день в 15:00
def scheduled_reply():
# Отправляем сообщение в определенный чат
chat_id = 'CHAT_ID' # Замените на ID чата, в который вы хотите отправить сообщение
message = "Привет! Это ежедневное сообщение от бота."
bot.send_message(chat_id, message)
# Обработчик команды /start
@bot.message_handler(commands=['start'])
def start(message):
# Отправляем приветственное сообщение
bot.reply_to(message, "Привет! Я бот, который будет отвечать раз в день в 15:00.")
# Обработчик команды /hello
@bot.message_handler(commands=['hello'])
def hello(message):
# Отправляем приветственное сообщение
bot.reply_to(message, "Привет! Как дела?")
# Планирование выполнения функции scheduled_reply каждый день в 15:00
schedule.every().day.at("15:00").do(scheduled_reply)
# Запуск планировщика в отдельном потоке
def scheduler():
while True:
schedule.run_pending()
time.sleep(1)
# Запускаем обработчик команд и планировщик в отдельных потоках
import threading
command_thread = threading.Thread(target=bot.infinity_polling)
scheduler_thread = threading.Thread(target=scheduler)
command_thread.start()
scheduler_thread.start()
@dp.callback_query_handler(lambda call: call.data.startswith("answer")
l = ['Яблоко', 'Груша']
keyboard = types.InlineKeyboardMarkup()
backbutton = types.InlineKeyboardButton(text="Back", callback_data="MainMenu")
button_list = [types.InlineKeyboardButton(text=x, callback_data=x) for x in l]
keyboard.add(*button_list, backbutton)
def form_auth_name(message):
chek_login = message.text
if not str(chek_login) == db.auth_user_form(message.text):
mess = bot.send_message(message.chat.id, 'Неверный логин')
bot.register_next_step_handler(mess, form_auth_name)
else:
mess = bot.send_message(message.chat.id, 'Введите свой пароль.')
bot.register_next_step_handler(mess, form_auth_password)
type(r.json())
>>> geo = {'format': 'json', 'lat': f'51.22778325', 'lon': f'51.43176735508452'}
>>> r = requests.get('https://nominatim.openstreetmap.org/reverse', params=geo)
>>> r.json()
{'place_id': 158413949,
'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright',
'osm_type': 'way', 'osm_id': 227214466,
'lat': '51.22778325',
'lon': '51.43176735508452',
'display_name': '2/3, улица Юрия Гагарина, Уральск, Уральск Г.А., Западно-Казахстанская область, 090005, Қазақстан',
'address': {'house_number': '2/3', 'road': 'улица Юрия Гагарина', 'city': 'Уральск', 'county': 'Уральск Г.А.', 'state': 'Западно-Казахстанская область', 'ISO3166-2-lvl4': 'KZ-ZAP', 'postcode': '090005', 'country': 'Қазақстан', 'country_code': 'kz'},
'boundingbox': ['51.2274636', '51.2280884', '51.4309297', '51.4323584']}
>>> type(r.json())
<class 'dict'>
>>> r.json().keys()
dict_keys(['place_id', 'licence', 'osm_type', 'osm_id', 'lat', 'lon', 'display_name', 'address', 'boundingbox'])
>>>
...
>>> r.json().get('address').keys()
dict_keys(['house_number', 'road', 'city', 'county', 'state', 'ISO3166-2-lvl4', 'postcode', 'country', 'country_code'])
...
...
>>> r.json().get('address').get('city')
'Уральск'
...
...
elif message.text == ' Регистрация велосипеда ':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
btn1 = types.KeyboardButton(' Где наша мастерская? ')
btn2 = types.KeyboardButton(' Посмотреть прайс на ремонт ')
btn3 = types.KeyboardButton(' Наши контакты ')
btn4 = types.KeyboardButton('⏭ Далее ⏭')
markup.add(btn1, btn2, btn3, btn4)
bot.send_message(message.chat.id, 'Давайте запишем Ваш байк в базу данных.', reply_markup=markup)
markup_inline = types.InlineKeyboardMarkup()
# Обратите внимание на callback_data при создании кнопки
bk1 = types.InlineKeyboardButton(text='Stels', callback_data='bike_model|Stels')
bk2 = types.InlineKeyboardButton(text='Forvard', callback_data='bike_model|Forvard')
bk3 = types.InlineKeyboardButton(text='Кама', callback_data='bike_model|Кама')
bk4 = types.InlineKeyboardButton(text='Урал', callback_data='bike_model|Урал')
markup_inline.add(bk1, bk2, bk3, bk4)
bot.send_message(message.chat.id, 'Выберите модель', reply_markup=markup_inline)
# На случай, если у вас будут еще какие-либо инлайн кнопки,
# этот хендлер сработает только на тех, у которых callback_data начинается с bike_model
@bot.callback_query_handler(func=lambda call: call.data.startswith('bike_model'))
def reg(call):
# получаем модель велика
bike_model = call.data.split('|')[1]
chat_id = call.message.chat.id
conn = sqlite3.connect('db.db')
cursor = conn.cursor()
cursor.execute(f"UPDATE users SET brand = {bike_model} WHERE chat_id = {chat_id}")
conn.commit()
conn.close()
bot.send_message(chat_id, f'Записали!\nИдем дальше.')
mes = bot.send_message(chat_id, 'Введите серийный номер')
bot.register_next_step_handler(mes, serial_number)
def serial_number(message):
...