import telebot from me import get_me from flask import Flask, request, abort from query_log import logging from datetime import datetime as dt from os.path import exists import os from config import bot, ADMIN_ID import reminder # https://core.telegram.org/bots/api Telegram Bot API app = Flask(__name__) print("LutzBot is running!") @bot.message_handler(commands=['rules', 'faq']) def send_lutz_command(message): bot.send_message(message.chat.id, '🟡 Правила чата', parse_mode='HTML', disable_notification=True, ) logging(message) @bot.message_handler(commands=['lutz']) def send_lutz_command(message): bot.send_document( message.chat.id, document='BQACAgQAAxkBAAPBYsWJG9Ml0fPrnbU9UyzTQiQSuHkAAjkDAAIstCxSkuRbXAlcqeQpBA', caption="""Learning Python, 5th Edition ├ by Mark Lutz └ Released June 2013""", parse_mode='HTML') logging(message) @bot.message_handler(commands=['start']) def send_start_notify_admin(message): bot.send_message( ADMIN_ID, get_me(message), parse_mode='HTML') logging(message) @bot.message_handler(commands=['log']) def send_log_file(message): """Get log.csv""" if message.from_user.id == ADMIN_ID: file_path = f"logs/log_{dt.now().strftime('%Y-%m')}.csv" if exists(file_path): with open(file_path, "r", encoding='utf-8') as f: bot.send_document(message.chat.id, f) @bot.inline_handler(lambda query: len(query.query) == 0) def default_query(inline_query): """Inline Aricles""" lutz_rus = telebot.types.InlineQueryResultCachedDocument( id='44', title='📕 Изучаем Python 🇷🇺', document_file_id='BQACAgIAAxkBAAIBcGLHE2ryQewEP1ddXOd_jF3OOHUfAAISIAACaOk4SissgGKstQbqKQQ', description='Марк Лутц, 5-е издание, Том 1', caption="""Изучаем Python, 5-е издание ├ Автор: Марк Лутц └ Год: 2019""", parse_mode='HTML', ) matthes_rus = telebot.types.InlineQueryResultCachedDocument( id='45', title='📕 Изучаем Python 🇷🇺', document_file_id='BQACAgIAAxkBAAIBdmLHF0InnLNlQuKzi1fZOYWOdu7eAAIrIAACaOk4StPj0vlMzwe2KQQ', description='Эрик Мэтиз , 3-е издание', caption="""Изучаем Python, 3-е издание ├ Автор: Эрик Мэтиз └ Год: 2020""", parse_mode='HTML', ) lutz = telebot.types.InlineQueryResultDocument( id='1', title='📕 Learning Python ⭐️', document_url='https://fk7.ru/books/OReilly.Learning.Python.5th.Edition.pdf', description='Mark Lutz, 5th Edition', caption="""Learning Python, 5th Edition ├ by Mark Lutz └ Released June 2013""", parse_mode='HTML', mime_type='application/pdf', thumb_url='https://fk7.ru/books/OReilly.Learning.Python.5th.Edition.jpg', ) matthes = telebot.types.InlineQueryResultDocument( id='2', title='📕 Python Crash Course', document_url='https://fk7.ru/books/PythonCrashCourse.pdf', description='Eric Matthes, 2th Edition', caption="""Python Crash Course, 2th Edition ├ by Eric Matthes └ Released 2019""", parse_mode='HTML', mime_type='application/pdf', thumb_url='https://fk7.ru/books/PythonCrashCourse.jpg', ) vincent = telebot.types.InlineQueryResultDocument( id='3', title='📕 Django for Beginners', document_url='https://fk7.ru/books/django_for_beginners_4_0.pdf', description='William S. Vincent, 4.0', caption="""Django for Beginners, 4.0 ├ by William S. Vincent └ Released March 2022""", parse_mode='HTML', mime_type='application/pdf', thumb_url='https://fk7.ru/books/django_for_beginners_4_0.jpg', ) bot.answer_inline_query( inline_query.id, [lutz, matthes, lutz_rus, matthes_rus], cache_time=10) @bot.message_handler(content_types=['document']) def command_me(message): """ GetMe Informer. """ if message.chat.id == ADMIN_ID: bot.send_message(message.chat.id, message.document) @bot.message_handler(commands=['me']) def command_me(message): """GetMe Informer""" bot.send_message(message.chat.id, get_me(message), parse_mode='HTML') logging(message) @bot.message_handler(commands=['remind']) def remind_manually(): """Remind manually""" reminder.remind() @app.route(f"/bot{os.environ.get('LUTZPYBOT', 'Token not in ENVIRON')}/", methods=['POST']) def webhook(): """Parse POST requests from Telegram""" if request.headers.get('content-type') == 'application/json': json_string = request.get_data().decode('utf-8') update = telebot.types.Update.de_json(json_string) bot.process_new_updates([update]) return '' else: abort(403)