С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/352: Рейтинг темы: голосов - 352, средняя оценка - 4.79
 Аватар для Comeodore
1 / 1 / 0
Регистрация: 28.09.2018
Сообщений: 68
Telegram API

Отправка сообщений по таймеру

20.01.2020, 03:29. Показов 75326. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В прочем, не нашел то, как эту проблему можно решить не импортируя shedule модуль из pip. И вот, что я получил:

Python
1
2
3
4
5
6
7
8
9
10
11
12
import time
import schedule
 
def send_message():
    bot.send_message(370921204, 'Hello')
 
 
schedule.every().day.at("02:14").do(send_message())
schedule.every().day.at("02:15").do(send_message())
while True:
    schedule.run_pending()
    time.sleep(1)
Документация на модуль schedule - https://pypi.org/project/schedule/

При этом всем, вылетает ошибка на Heroku: И помимо этого, сообщение отправляется только при запуске бота, игнорируя время и бот перестает работать, не воспринимает команды, текст и т.д.
Подскажите, как можно исправить это или предлагайте свои варианты реализации отправки по таймеру, а так же подскажите как совместить while True и то что внутри вместе с bot.polling(none_stop=True)
Миниатюры
Отправка сообщений по таймеру  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2020, 03:29
Ответы с готовыми решениями:

Отправка голосовых сообщений
Подскажите, пожалуйста, как отправить голосовое сообщение. Отправить как голосовое сообщение нужно mp3 файл с компа

Отправка сообщений ботом в беседу Vk Api
Приветствую ! Необходимо, чтобы бот, который привязан к сообществу читал сообщения в беседе и отправлял на них определенный ответ в беседу...

Отправка ботом сообщений из телеграм канала
Доброго времени суток, уважаемые форумчане, на досуге при написании телеграмм бота с помощью Telegram Bot API на питоне столкнулся с таким...

6
9 / 6 / 5
Регистрация: 25.12.2019
Сообщений: 18
20.01.2020, 11:31
Я решил проблему через Multiprocessing.Process.
Один процесс мониторит API, второй выполняет бесконечный цикл While.
Пример:

main файл:
Python
1
2
3
4
5
6
if __name__ == '__main__':
    Time_reports.start_process()
    try:
        bot.polling(none_stop=True, interval = 0)
    except:
        pass
В доп запросе из другого файла:

Python
1
2
3
4
5
6
7
8
9
class Time_reports():
    bot = telebot.TeleBot(API_TOKEN)
    def packets_to_host():
        while True:
            Time_reports.bot.send_message('ID_пользователя','В таблице  ' + str(a[0][0]) + ' Записей')
            time.sleep(300)
    def start_process():
            p1 = Process(target=Time_reports.packets_to_host, args=())
            p1.start()
1
 Аватар для Comeodore
1 / 1 / 0
Регистрация: 28.09.2018
Сообщений: 68
20.01.2020, 13:51  [ТС]
Цитата Сообщение от rimbos Посмотреть сообщение
В доп запросе из другого файла:
class Time_reports():
    bot = telebot.TeleBot(API_TOKEN)
    def packets_to_host():
        while True:
            Time_reports.bot.send_message('ID_пользо вателя','В таблице  ' + str(a[0][0]) + ' Записей')
            time.sleep(300)
    def start_process():
            p1 = Process(target=Time_reports.packets_to_h ost, args=())
            p1.start()
У меня тут ругается на пустоту в скобках def'ов
0
 Аватар для Comeodore
1 / 1 / 0
Регистрация: 28.09.2018
Сообщений: 68
20.01.2020, 14:12  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def send_message():
    bot.send_message(370921204, 'Hello')
 
 
def start_process():
    p1 = process(target=send(), args=())
    p1.start()
 
 
def send():
    while True:
        schedule.every().day.at("13:07").do(send_message())
        time.sleep(60)
 
 
if __name__ == '__main__':
    start_process()
    try:
        bot.polling(none_stop=True, interval=0)
    except:
        pass
Миниатюры
Отправка сообщений по таймеру  
0
 Аватар для Comeodore
1 / 1 / 0
Регистрация: 28.09.2018
Сообщений: 68
20.01.2020, 15:48  [ТС]
Пришел к такому виду, но сообщение все равно не отправляется, ошибок не вылетает, все работает, кроме самой отправки, в чем причина?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def send_message():
    bot.send_message(370921204, 'Hello')
 
 
schedule.every().day.at("14:46").do(send_message)
 
 
class Time_reports():
    def packets_to_host():
        while True:
            schedule.run_pending()
            time.sleep(1)
    def start_process():
            p1 = Process(target=Time_reports.packets_to_host, args=())
            p1.start()
 
 
if __name__ == '__main__':
    Time_reports.start_process()
    try:
        bot.polling(none_stop=True)
    except:
        pass
0
9 / 6 / 5
Регистрация: 25.12.2019
Сообщений: 18
21.01.2020, 11:06
Лучший ответ Сообщение было отмечено Comeodore как решение

Решение

В таком виде будет работать.
Запусти через CMD
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
import telebot
import time
import datetime
from multiprocessing import *
import schedule
telebot.apihelper.proxy = {'PROXY'}
API_TOKEN = 'API'
bot = telebot.TeleBot(API_TOKEN)
 
 
def start_process():#Запуск Process
    p1 = Process(target=P_schedule.start_schedule, args=()).start()
 
    
class P_schedule(): # Class для работы с schedule
    def start_schedule(): #Запуск schedule
        ######Параметры для schedule######
        schedule.every().day.at("11:02").do(P_schedule.send_message1)
        schedule.every(1).minutes.do(P_schedule.send_message2)
        ##################################
        
        while True: #Запуск цикла
            schedule.run_pending()
            time.sleep(1)
 
    ####Функции для выполнения заданий по времени  
    def send_message1():
        bot.send_message(USER_ID, 'Отправка сообщения по времени')
    def send_message2():
        bot.send_message(USER_ID, 'Отправка сообщения через определенное время')
    ################
 
###Настройки команд telebot#########
@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id,'Нажали start')            
#####################
 
    
if __name__ == '__main__':
    start_process()
    try:
        bot.polling(none_stop=True)
    except:
        pass
1
 Аватар для Comeodore
1 / 1 / 0
Регистрация: 28.09.2018
Сообщений: 68
22.01.2020, 04:53  [ТС]
Цитата Сообщение от rimbos Посмотреть сообщение
В таком виде будет работать.
Запусти через CMD
Проблема решена, она была в часовом поясе хостинга)

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
import time
from multiprocessing.context import Process
import schedule
 
def send_message1():
    bot.send_message(USERID, 'TEXT')
 
schedule.every().day.at("08:00").do(send_message1)
 
 
class ScheduleMessage():
    def try_send_schedule():
        while True:
            schedule.run_pending()
            time.sleep(1)
 
    def start_process():
        p1 = Process(target=ScheduleMessage.try_send_schedule, args=())
        p1.start()
 
 
if __name__ == '__main__':
    ScheduleMessage.start_process()
    try:
        bot.polling(none_stop=True)
    except:
        pass
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2020, 04:53
Помогаю со студенческими работами здесь

Отправка сообщений в системный канал или в тот который укажет администратор
Такая ситуация, искал информацию, как отправлять сообщения о входе выходе пользователь в определенный канал (Тот, в котором сам дискорд...

Отправка сообщений всем подключенным клиентам
Как реализовать отправку всех сообщений которые поступили на сервер, всем клиентам(потокам)? Пытался реализовать внутри класса...

Как сделать вывод сообщений по таймеру?
В общем передо мной стоит такая задача: мне нужно организовать вывод сообщения через определённый промежуток времени. Например, задали...

Отправка данных в БД по таймеру
Имеется код: <span id="timer">00:20</span> <script> var t = setInterval (function () {function f (x) {return (x / 100).toFixed...

Отправка GET запроса по таймеру
HTTP сервер предоставляет данные по запросу от клиента, предоставляется массив чисел. Запрос генерируется по таймеру каждую секунду. Как...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru