2 / 2 / 0
Регистрация: 23.02.2018
Сообщений: 74
Telegram Bot

Уведомление о Дне Рождения сотрудника с возможностью добавления или изменения данных

05.06.2022, 10:53. Показов 2487. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день,

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

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

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

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

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.06.2022, 10:53
Ответы с готовыми решениями:

Sharepoint services 3.0 - Уведомление о дне рождении сотрудника
Всем доброго времени суток!! Вот моя типичная история про так как директор дал задание неучу :))) Была поставлена задача: сделать...

Уведомление о дне рождения за 3-4 дня
Всем привет! Нужна вот такая помощь. Есть базав которой есть уведомление о ДР, оно работает и отображает дни рождения день у день, а нужно...

Вывод данных о Дне рождения
Всем привет. Что-то совсем затупил и не могу сообразить как сделать уведомление в скрипте. Смысл в том, что есть список пользователей в БД....

3
2 / 2 / 0
Регистрация: 23.02.2018
Сообщений: 74
08.06.2022, 00:23  [ТС]
Решение нашел самостоятельно. Поменял местами расположение строк.
Python
1
2
3
4
5
if __name__ == '__main__':
    bot.polling(none_stop=True)
    
    t2 = threading.Thread(target=start_schedule())  
    t2.start()
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
08.06.2022, 07:34
Prosto_maloyy, ты не решил проблему, т.к. до создания и запуска потока программа не доходит, а уходит в бесконечный цикл, на строке: bot.polling(none_stop=True)

Python
1
2
3
4
t2 = threading.Thread(target=start_schedule)  
t2.start()
 
bot.polling(none_stop=True)
0
2 / 2 / 0
Регистрация: 23.02.2018
Сообщений: 74
08.06.2022, 14:26  [ТС]
Добрый день,

А как возможно иначе реализовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2022, 14:26
Помогаю со студенческими работами здесь

Хранение значений с возможностью одновременного добавления/изменения с нескольких пользователей
Здравствуйте. Есть такие проблемные списки, как список друзей, закладки на сайте... Способы, которые я рассмотрел (и знаю): ...

Уведомление об дне недели и месяца в календаре
Нужна помощь в делфи. Пишу курсовую работу. Тема заключалась в том, что нужно написать программу календарь с показанием дня и вывод при...

База данных с возможностью редактирования, удаления и добавления
Можно ли на питоне реализовать такое: -База данных с возможностью редактирования, удаления и добавления таких предметов: Изображение,...

Вывод данных в таблицу с возможностью добавления записей
Добрый вечер, программисты! Помогите воплотить мысль в жизнь! К примеру у меня есть первоначальный List какой-то(пускай это лист...

Имеется список сотрудников, в котором записаны: фамилия сотрудника, год рождения, месяц и день рождения
Имеется список сотрудников, в котором записаны: фамилия сотрудника, год рождения, месяц и день рождения (входной файл firma.txt). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru