From d76da989c3cfe0c8bd05dbaa2f2f8d00f7324239 Mon Sep 17 00:00:00 2001 From: Rykov7 Date: Sun, 21 Aug 2022 14:48:14 +0300 Subject: [PATCH] pack to package --- app/__init__.py | 0 bot.py => app/bot.py | 37 ++++++++++++++++---------------- me.py => app/me.py | 0 query_log.py => app/query_log.py | 0 reminder.py => app/reminder.py | 20 ++++++++++------- holidays.csv | 19 ++++++++-------- wsgi.py | 2 +- 7 files changed, 41 insertions(+), 37 deletions(-) create mode 100644 app/__init__.py rename bot.py => app/bot.py (85%) rename me.py => app/me.py (100%) rename query_log.py => app/query_log.py (100%) rename reminder.py => app/reminder.py (74%) diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bot.py b/app/bot.py similarity index 85% rename from bot.py rename to app/bot.py index 752c290..36764f5 100644 --- a/bot.py +++ b/app/bot.py @@ -1,21 +1,21 @@ import telebot -from me import get_me +from telebot import util from flask import Flask, request, abort -from query_log import logging from datetime import datetime as dt from os.path import exists -import os import csv -from config import bot, ADMIN_ID -import reminder +from .query_log import logging +from .me import get_me +from .config import bot, ADMIN_ID, TOKEN +from . import reminder # https://core.telegram.org/bots/api Telegram Bot API app = Flask(__name__) -print("LutzBot is running!") +print(">>> LutzBot is running! <<<") @bot.message_handler(commands=['rules', 'faq']) @@ -106,17 +106,6 @@ def default_query(inline_query): 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) @@ -142,9 +131,19 @@ def remind_manually(): reminder.remind() -@app.route(f"/bot{os.environ.get('LUTZPYBOT', 'Token not in ENVIRON')}/", methods=['POST']) +@bot.message_handler(commands=['jobs']) +def list_jobs(message): + """List all jobs""" + if message.chat.id == ADMIN_ID: + text = reminder.get_jobs() + bot.send_message(message.chat.id, text, parse_mode='HTML') + + +@app.route(f"/bot{TOKEN}/", methods=['POST']) def webhook(): - """Parse POST requests from Telegram""" + """ Set webhook. """ + bot.set_webhook(f'https://fk7.ru/bot{TOKEN}/', allowed_updates=util.update_types) + """ 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) diff --git a/me.py b/app/me.py similarity index 100% rename from me.py rename to app/me.py diff --git a/query_log.py b/app/query_log.py similarity index 100% rename from query_log.py rename to app/query_log.py diff --git a/reminder.py b/app/reminder.py similarity index 74% rename from reminder.py rename to app/reminder.py index f5c2580..92af2c1 100644 --- a/reminder.py +++ b/app/reminder.py @@ -2,17 +2,13 @@ import schedule import time from threading import Thread from datetime import datetime as dt -from config import bot import csv -from dotenv import load_dotenv -from config import PYTHONCHATRU +from .config import PYTHONCHATRU, bot + # https://core.telegram.org/bots/api Telegram Bot API -dotenv_path = '.env' -load_dotenv(dotenv_path) - def scheduler(): while True: @@ -28,7 +24,7 @@ def remind(): for entry in holidays[1:]: date, holiday, description = entry if today.month == dt.strptime(date, "%Y-%m-%d").month and today.day == dt.strptime(date, "%Y-%m-%d").day: - notification = f'🎉💻 Сегодня {dt.strptime(date, "%m-%d"):%d.%m}, {holiday.upper()}!\ + notification = f'🎉💻 Сегодня {dt.strptime(date, "%Y-%m-%d"):%d.%m}, {holiday.upper()}!\ \n\n{description}.' if dt.strptime(date, "%Y-%m-%d").year != 1: age = today.year - dt.strptime(date, "%Y-%m-%d").year @@ -36,5 +32,13 @@ def remind(): bot.send_message(PYTHONCHATRU, notification, parse_mode='HTML') # PYTHONCHATRU -schedule.every().day.at('07:00').do(remind) +def get_jobs(): + all_jobs = schedule.get_jobs() + text = f"├ Jobs: {str(len(all_jobs))}\ +\n├ {dt.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n" + text += '' + str(all_jobs) + '' + return text + + +schedule.every().day.at('06:00').do(remind) Thread(target=scheduler).start() diff --git a/holidays.csv b/holidays.csv index b6bf9a1..ec7fc39 100644 --- a/holidays.csv +++ b/holidays.csv @@ -1,11 +1,12 @@ "Date","Name","Description" -0001-01-28,"Международный день защиты персональных данных","Международный день защиты персональных данных (Data Protection Day). Это праздник был учрежден для того, чтобы пользователи сети не забывали о соблюдении правил поведения в интернете, которые помогают обезопасить их виртуальную и реальную жизнь" 0001-09-13,"День программиста","День программиста отмечают практически повсеместно, ведь в XXI веке важность и необходимость этой профессии понятна всем. А в России праздник даже является официальным" -0001-09-30,"День интернета","Все началось с того, что в 1998 году московская фирма IT Infoart Stars разослала фирмам и организациям предложение поддержать инициативу, состоящую из двух пунктов: назначить 30 сентября «Днем интернета», ежегодно его праздновать и провести «перепись населения русскоязычного интернета»" -1991-02-20,"День рождения Python","Задумка по реализации языка появилась в конце 1980-х годов, а разработка его реализации началась в 1989 году сотрудником голландского института CWI Гвидо ван Россумом. Гвидо начал разрабатывать Python на досуге, позаимствовав некоторые наработки для языка ABC" -1995-05-23,"День рождения MySQL","MySQL возникла как попытка применить mSQL к собственным разработкам компании: таблицам, для которых использовались ISAM — подпрограммы низкого уровня" -1996-07-08,"День рождения PostgreSQL","К разработке Postgres, начавшейся в 1986 году, имел непосредственное отношение Майкл Стоунбрейкер, руководитель более раннего проекта Ingres" -2005-07-21,"День рождения Django","Джанго — свободный фреймворк для веб-приложений на языке Python. Проект поддерживается организацией Django Software Foundation. Веб-фреймворк Django используется в сайтах Instagram, Disqus, Mozilla, The Washington Times, Pinterest, YouTube, Google и др. Авторы: американский веб-разработчик Адриан Головатый и британский программист Саймон Уиллисон" -2008-12-03,"День рождения Python 3","После длительного тестирования, вышла первая версия Python 3000 (или Python 3.0, также используется сокращение Py3k). В Python 3000 устранены многие недостатки архитектуры с максимально возможным (но не полным) сохранением совместимости со старыми версиями Python" -2010-04-01,"День рождения Flask","Создатель и основной автор — австрийский программист Армин Ронахер, начал работу над проектом в 2010 году" -2018-12-05,"День рождения FastAPI","FastAPI — веб-фреймворк для создания API, написанный на Python. Один из самых быстрых и популярных (после Django и Flask) веб-фреймворков, написанных на Python. Автор — колумбиец Себастьян Рамирез" +1946-02-14,"День компьютерщика","14 февраля 1946 года научному миру и всем заинтересованным был продемонстрирован первый реально работающий электронный компьютер ENIAC I (Electrical Numerical Integrator And Calculator)" +1991-02-20,"День рождения Python","Задумка по реализации языка появилась в конце 1980-х годов, а разработка его реализации началась в 1989 году сотрудником голландского института CWI Гвидо ван Россумом" +1994-04-07,"День рождения Рунета","7 апреля 1994 года для России был зарегистрирован домен — .Ru — и внесен в международную базу данных национальных доменов верхнего уровня." +1995-05-23,"День рождения MySQL","MySQL — это система управления базами данных (СУБД), распространяемая как свободное программное обеспечение" +1996-07-08,"День рождения PostgreSQL","PostgreSQL — свободная объектно-реляционная система управления базами данных (СУБД). Разработка начиналась в 1986 году Майклом Стоунбрейкером, руководителем более раннего проекта Ingres" +1998-04-04,"День веб-мастера","4 апреля — «404» — отмечают свой профессиональный праздник неутомимые веб-мастера и интернет-разработчики" +2005-07-21,"День рождения Django","Джанго — свободный фреймворк для веб-приложений на языке Python. Авторы: американский веб-разработчик Адриан Головатый и британский программист Саймон Уиллисон" +2008-12-03,"День рождения Python 3","В Python 3000 (Python 3.0, Py3k) устранены многие недостатки архитектуры с максимально возможным (но не полным) сохранением совместимости со старыми версиями Python" +2010-04-01,"День рождения Flask","Flask — фреймворк для создания веб-приложений на языке программирования Python. Создатель и основной автор — австрийский программист Армин Ронахер" +2018-12-05,"День рождения FastAPI","FastAPI — веб-фреймворк для создания API, написанный на Python. Один из самых быстрых и популярных (после Django и Flask) веб-фреймворков, написанных на Python. Автор — Себастьян Рамирез" diff --git a/wsgi.py b/wsgi.py index 880c019..2628d26 100644 --- a/wsgi.py +++ b/wsgi.py @@ -1,4 +1,4 @@ -from bot import app +from app.bot import app if __name__ == '__main__': app.run(debug=True)