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)