Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Perl
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2022, 22:48   #1
Prosto_Maloy
Новичок
Джуниор
 
Регистрация: 05.06.2022
Сообщений: 1
Восклицание Телеграм-Бот о Днях Рождениях

Всем добрый день,

Нужно написать бота, который будет уведомлять в беседе, если сегодня у кого-то день рождение. Это я реализовал с помощью schedule. Каждый день в определенное время Бот сравнивает сегодняшнюю дату с днями рождения, если есть совпадение публикует. Далее в течении дня, сообщение удаляет.

Еще нужно, чтобы была возможность вносить дополнительные данные о новых людях. Делать проверку, внесен ли такой user в бот и тд.
Есть предположение реализовать все это через многопоточность с помощью библиотеки threading. Когда я создаю t1 в __main__', добавляя туда функции со стандартными командами Message_handler, бот на команды не реагирует.

Есть идея для создания 2-ого бота, который будет отвечать за Добавление/Проверку/Удаление данных, но хотелось бы реализовать весь функционал в одном месте.

Какими способами и методами возможно реализовать этого бота? С удовольствием послушаю ваши возможные вариации для решение этой задачи))

Код:
from telebot import *
from time import sleep
import json
import schedule
import threading
 
 
print("\n")
print("Bot working.........")
 
with open("Api.json", "r") as a:
    afile = json.load(a)
a.close()
 
with open("birth.json", encoding="utf8") as d:
    bfile = json.load(d)
d.close()
 
bot = telebot.TeleBot(afile["Api_token"], threaded=True)
chatID = afile["Chat_id"]   
 
 
#Begining: Part of Created post with birthday
def check_birthday(check = None, msg_id = None):   
    text = '''INFO
Поздравим сегодня с Днем Рождения:
'''
    text2 = '''\nЖелаем крепкого здоровья, благополучия в семье, успехов в работе'''
    today = time.strftime('%d.%m')
    # today = "02.12"
    for date in bfile:
        if today in date["Date_birth"]:
            Name_birth = date["First_name"] + " " + date["Last_name"]
            text = text + "\n" + Name_birth
            check = True
    if check:
        text = text + text2
        msg = bot.send_message(chatID, text)
        msg_id = msg.chat.id, msg.message_id
    return msg_id
def check_post(message_id):
    if message_id:
        bot.delete_message(*message_id)
schedule.every().day.at("14:52").do(check_birthday) 
msg_id = check_birthday()
schedule.every().day.at("15:13").do(check_post, message_id=msg_id) 
def start_schedule():
    while True:
        print(121)
        schedule.run_pending()
        time.sleep(30)
#End: Part of Created post with birthday
 
 
if __name__ == '__main__':
    t2 = threading.Thread(target=start_schedule())  
    t2.start()
 
    bot.polling(none_stop=True)

Последний раз редактировалось Prosto_Maloy; 05.06.2022 в 22:51.
Prosto_Maloy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет возраста человека в годах месяцах и днях Slavik_UA Microsoft Office Excel 8 28.10.2011 15:35
Ребят на днях зачет не знаю с++ вообще xxNightwolfxx Помощь студентам 1 21.06.2011 22:52
Подсчет трафика по днях(алгоритм) legendary Общие вопросы Delphi 5 06.01.2011 18:58
Паскаль ИДЗ по программированию. Надо сдать на днях... Karina_Vamp Помощь студентам 5 20.12.2010 21:45