# commands.py
def register_commands(bot):
# функция register_commands должна присутствовать в каждом файле,
# и содержать вложенные объявления обработчиков событий.
# bot - объект бота, на котором регаются обработчики.
# таким же способом можно пробросить другие глобальные объекты программы.
# очень важно, чтобы функция вызывалась РОВНО один раз в программе!
# дальше пошли обработчики...
@bot.message_handler(commands=['version'])
def version_message(message):
bot.send_message(message.chat.id, 'Текущая версия бота 1.0')
bot.send_message(message.chat.id, 'Что умеет эта версия?\n1.Что-то точно умеет')
import commands
import weather
bot = telebot.TeleBot(.................)
# заставляем модули объявить и зарегистрировать свои обработчики
commands.register_commands(bot)
weather.register_commands(bot)
# дальше идут местные обработчики
@bot.message_handler(content_types=['text'])
def send_text(message):
if message.text.lower() in a:
bot.send_message(message.chat.id, 'Привет, создатель')
elif message.text.lower() =='ghbdtn':
bot.send_message(message.chat.id, 'Тебе тоже привет, раскладку переключи')
elif message.text.lower() in b:
bot.send_message(message.chat.id, 'Прощай, создатель ')
# ну и запускаем бота
bot.infinity_polling()
по видеоуроку ХаудиХо
import sys
import pathlib
script_path = pathlib.Path(sys.argv[0]).parent # абсолютный путь до каталога, где лежит скрипт
conn = sqlite3.connect(script_path / "Database.db") # формируем абсолютный путь до файла базы
import time
import sqlite
connection = sqlite3.connect('bot.db')
cursor = connection.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS users ( -- всё что после -- комментарий SQL
id TEXT PRIMARY KEY, -- идентификатор пользователя, он же первичный ключ таблицы
first_use REAL, -- метка времени, когда пользователь впервые обратился к боту
last_use REAL -- метка времени, когда пользователь последний раз обратился к боту
)""")
cursor.close()
def ensure_user_stats(user_id):
"Эта функция обновляет таблицу users, и должна вызываться в начале обработки каждой команды."
global connection
cursor = connection.cursor()
now = time.time()
# пытаемся добавить строку с указанным id, и фиксируем текущее время в полях first_use и last_use
# если возникает конфликт в поле id (такое id уже есть),
# то мы обновляем в этой записи поле last_use на текущее время, а остальное не трогаем
cursor.execute("""INSERT INTO users (id, first_use, last_use) VALUES (?, ?, ?)
ON CONFLICT (id) DO UPDATE SET last_use = excluded.last_use""", (user_id, now, now))
cursor.close()
commands = { "Нажми": "python3 /foor/bar/baz" }
session_id = requests.post(
"https://yug-krdr-itv04.svc.iptv.rt.ru/api/v2/user/sessions",
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)", "session_id": sess_id},
json={"login": email, "login_type": "email", "password": "1234567"},
).json() # значение session_id может быть не только строкой, но и целым числом, словарём, списком или None
return {"san": san, "session_id": session_id, "uid": ud} #в словарь оно пишется как есть
def requestBuilderWink(url, data=None, params=None, json=None, method=None):
register = regAccount()
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"session_id": register["session_id"], # а потом используется как заголовок - тоже как есть
"x-rt-uid": register["uid"],
"x-rt-san": register["san"],
}