add Holiday Reminder
This commit is contained in:
@@ -3,3 +3,5 @@
|
|||||||
/testbot.py
|
/testbot.py
|
||||||
/.venv/
|
/.venv/
|
||||||
/.idea/
|
/.idea/
|
||||||
|
/config.py
|
||||||
|
/.env
|
||||||
|
|||||||
@@ -4,13 +4,17 @@ from flask import Flask, request, abort
|
|||||||
from query_log import logging
|
from query_log import logging
|
||||||
from datetime import datetime as dt
|
from datetime import datetime as dt
|
||||||
from os.path import exists
|
from os.path import exists
|
||||||
|
import os
|
||||||
|
|
||||||
|
from config import bot, ADMIN_ID
|
||||||
|
import reminder
|
||||||
|
|
||||||
# https://core.telegram.org/bots/api Telegram Bot API
|
# https://core.telegram.org/bots/api Telegram Bot API
|
||||||
|
|
||||||
LUTZPYBOT = "5598132169:AAFBpUn4Us8m7StkY4yHUIcEnnJg3adPvsQ"
|
|
||||||
app = Flask(__name__)
|
|
||||||
bot = telebot.TeleBot(LUTZPYBOT)
|
|
||||||
|
|
||||||
print("LutzPyBot is working!")
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
print("LutzBot is running!")
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=['rules', 'faq'])
|
@bot.message_handler(commands=['rules', 'faq'])
|
||||||
@@ -38,14 +42,14 @@ def send_lutz_command(message):
|
|||||||
@bot.message_handler(commands=['start'])
|
@bot.message_handler(commands=['start'])
|
||||||
def send_start_notify_admin(message):
|
def send_start_notify_admin(message):
|
||||||
bot.send_message(
|
bot.send_message(
|
||||||
280887861, get_me(message), parse_mode='HTML')
|
ADMIN_ID, get_me(message), parse_mode='HTML')
|
||||||
logging(message)
|
logging(message)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=['log'])
|
@bot.message_handler(commands=['log'])
|
||||||
def send_log_file(message):
|
def send_log_file(message):
|
||||||
"""Get log.csv"""
|
"""Get log.csv"""
|
||||||
if message.from_user.id == 280887861:
|
if message.from_user.id == ADMIN_ID:
|
||||||
file_path = f"logs/log_{dt.now().strftime('%Y-%m')}.csv"
|
file_path = f"logs/log_{dt.now().strftime('%Y-%m')}.csv"
|
||||||
if exists(file_path):
|
if exists(file_path):
|
||||||
with open(file_path, "r", encoding='utf-8') as f:
|
with open(file_path, "r", encoding='utf-8') as f:
|
||||||
@@ -115,8 +119,8 @@ def default_query(inline_query):
|
|||||||
|
|
||||||
@bot.message_handler(content_types=['document'])
|
@bot.message_handler(content_types=['document'])
|
||||||
def command_me(message):
|
def command_me(message):
|
||||||
"""GetMe Informer"""
|
""" GetMe Informer. """
|
||||||
if message.chat.id == 280887861:
|
if message.chat.id == ADMIN_ID:
|
||||||
bot.send_message(message.chat.id, message.document)
|
bot.send_message(message.chat.id, message.document)
|
||||||
|
|
||||||
|
|
||||||
@@ -127,7 +131,13 @@ def command_me(message):
|
|||||||
logging(message)
|
logging(message)
|
||||||
|
|
||||||
|
|
||||||
@app.route(f'/bot{LUTZPYBOT}/', methods=['POST'])
|
@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():
|
def webhook():
|
||||||
"""Parse POST requests from Telegram"""
|
"""Parse POST requests from Telegram"""
|
||||||
if request.headers.get('content-type') == 'application/json':
|
if request.headers.get('content-type') == 'application/json':
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
Date,Name,Description
|
|
||||||
256,День программиста ,"Число 256 выбрано потому, что это количество целых чисел, которое можно выразить с помощью одного восьмиразрядного байта, а также это максимальная степень числа 2, которая меньше количества дней в году — 365."
|
|
||||||
01-28,Международный день защиты персональных данных ,"Международный день защиты персональных данных (Data Protection Day). Это праздник был учрежден для того, чтобы пользователи сети не забывали о соблюдении правил поведения в интернете, которые помогают обезопасить их виртуальную и реальную жизнь."
|
|
||||||
09-30,День интернета,"Все началось с того, что в 1998 году московская фирма IT Infoart Stars разослала фирмам и организациям предложение поддержать инициативу, состоящую из двух пунктов: назначить 30 сентября «Днем интернета», ежегодно его праздновать и провести «перепись населения русскоязычного интернета»."
|
|
||||||
|
@@ -0,0 +1,9 @@
|
|||||||
|
"Date","Name","Description"
|
||||||
|
"09-13","День программиста","День программиста отмечают практически повсеместно, ведь в XXI веке важность и необходимость этой профессии понятна всем. А в России праздник даже является официальным"
|
||||||
|
"01-28","Международный день защиты персональных данных","Международный день защиты персональных данных (Data Protection Day). Это праздник был учрежден для того, чтобы пользователи сети не забывали о соблюдении правил поведения в интернете, которые помогают обезопасить их виртуальную и реальную жизнь"
|
||||||
|
"09-30","День интернета","Все началось с того, что в 1998 году московская фирма IT Infoart Stars разослала фирмам и организациям предложение поддержать инициативу, состоящую из двух пунктов: назначить 30 сентября «Днем интернета», ежегодно его праздновать и провести «перепись населения русскоязычного интернета»"
|
||||||
|
2005-07-21,"День рождения Django","Джанго — свободный фреймворк для веб-приложений на языке Python. Проект поддерживается организацией <i>Django Software Foundation</i>. Веб-фреймворк Django используется в сайтах Instagram, Disqus, Mozilla, The Washington Times, Pinterest, YouTube, Google и др. Авторы: американский веб-разработчик Адриан Головатый и британский программист Саймон Уиллисон"
|
||||||
|
2018-12-05,"День рождения FastAPI","FastAPI — веб-фреймворк для создания API, написанный на Python. Один из самых быстрых и популярных (после Django и Flask) веб-фреймворков, написанных на Python. Автор — колумбиец Себастьян Рамирез"
|
||||||
|
2010-04-01,"День рождения Flask","Создатель и основной автор — австрийский программист Армин Ронахер, начал работу над проектом в 2010 году"
|
||||||
|
"1991-02-20","День рождения Python","Задумка по реализации языка появилась в конце 1980-х годов, а разработка его реализации началась в 1989 году сотрудником голландского института CWI Гвидо ван Россумом. Гвидо начал разрабатывать Python на досуге, позаимствовав некоторые наработки для языка ABC"
|
||||||
|
2008-12-03,"День рождения Python 3","После длительного тестирования, вышла первая версия Python 3000 (или Python 3.0, также используется сокращение Py3k). В Python 3000 устранены многие недостатки архитектуры с максимально возможным (но не полным) сохранением совместимости со старыми версиями Python"
|
||||||
|
@@ -17,4 +17,3 @@ def logging(message):
|
|||||||
[dt.datetime.now().strftime('%Y-%m-%d %H:%H'), message.from_user.id,
|
[dt.datetime.now().strftime('%Y-%m-%d %H:%H'), message.from_user.id,
|
||||||
message.from_user.first_name, message.from_user.username,
|
message.from_user.first_name, message.from_user.username,
|
||||||
message.chat.id, message.from_user.language_code, message.from_user.is_premium, message.text])
|
message.chat.id, message.from_user.language_code, message.from_user.is_premium, message.text])
|
||||||
|
|
||||||
|
|||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
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
|
||||||
|
# https://core.telegram.org/bots/api Telegram Bot API
|
||||||
|
|
||||||
|
dotenv_path = '.env'
|
||||||
|
load_dotenv(dotenv_path)
|
||||||
|
|
||||||
|
with open('holidays.csv', newline='', encoding='utf-8') as holidays_file:
|
||||||
|
holidays = tuple(csv.reader(holidays_file))
|
||||||
|
|
||||||
|
|
||||||
|
def scheduler():
|
||||||
|
while True:
|
||||||
|
schedule.run_pending()
|
||||||
|
time.sleep(20)
|
||||||
|
|
||||||
|
|
||||||
|
def remind():
|
||||||
|
""" Remind holiday. """
|
||||||
|
today = dt.today()
|
||||||
|
for entry in holidays[1:]:
|
||||||
|
date, holiday, description = entry
|
||||||
|
if len(date) == 5 \
|
||||||
|
and today.month == dt.strptime(date, "%m-%d").month \
|
||||||
|
and today.day == dt.strptime(date, "%m-%d").day:
|
||||||
|
notification = f'🎉💻 Сегодня {dt.strptime(date, "%m-%d"):%d.%m}, <b><u>{holiday.upper()}</u></b>! \
|
||||||
|
\n\n{description}.'
|
||||||
|
bot.send_message(PYTHONCHATRU, notification, parse_mode='HTML') # PYTHONCHATRU
|
||||||
|
elif len(date) == 10 \
|
||||||
|
and today.month == dt.strptime(date, "%Y-%m-%d").month \
|
||||||
|
and today.day == dt.strptime(date, "%Y-%m-%d").day:
|
||||||
|
age = today.year - dt.strptime(date, "%Y-%m-%d").year
|
||||||
|
notification = f'🎉💻 Сегодня {dt.strptime(date, "%Y-%m-%d"):%d.%m}, <b><u>{holiday.upper()}</u></b>! \
|
||||||
|
\n\n{description}.\n<i>{age} годовщина</i>'
|
||||||
|
bot.send_message(PYTHONCHATRU, notification, parse_mode='HTML') # PYTHONCHATRU
|
||||||
|
|
||||||
|
|
||||||
|
schedule.every().day.at('08:00').do(remind)
|
||||||
|
Thread(target=scheduler).start()
|
||||||
|
|
||||||
Binary file not shown.
Reference in New Issue
Block a user