Пишу телеграм бота на питоне и у меня есть трудности в создании уведомления. У меня такая цель, что есть некая игра. В некой игре проходит два раза в неделю событие в 21:00 и мне нужно написать на питоне, чтобы когда пользователь нажимал кнопку, например, «Включить уведомление», то за 10 минут до начала ему будут приходить уведомления сообщением в эти дни о том, что через 10 минут начнется событие
Отслеживать
задан 25 июл 2022 в 12:30
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
spisok = [] #создаём список spisok.append(message.from_user.id) #Добавляем пользователя в список, если он включил уведомления #Отправляем уведомления (код нужно поместить в начале) def obnulenie(): while True: time.sleep(1) if datetime.datetime.now().strftime(«%H:%M:%S») == «20:50:00»: #проверяем время #тут пробегаем циклом по списку пользователей и отправляем им сообщения thread1 = Thread(target=obnulenie, args=()) #создаём поток thread1.start() #запускаем поток
Отслеживать
ответ дан 29 июл 2022 в 3:03
71 6 6 бронзовых знаков
- python
- telegram-bot
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Уведомления от Binance в Telegram на Python
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник: ru.stackoverflow.com
py-telegram-notifier 0.1.0-2
A simple notifier utilizing the Telegram Bot API. This can be used by the command line, by function call, or with a context manager.
Навигация
Ссылки проекта
Статистика
Метаданные
Требует: Python >=3.6
Сопровождающие
Описание проекта
py-telegram-notifier
A simple utilization of the Telegram Bot API for sending messages to a Telegram chat by means of a context manager, function calls, or a CLI.
Installation
pip install py-telegram-notifier
Requirements
In order for the module to function, you must supply it with a bot token, and a chat id. Full instructions on creating a bot can be found here.
Usage as context manager
Firstly, set up the config for your Notifier. This only has to be done once, assuming you are sending messages from the same bot to the same chat every time.
Then, you may use a Notifier as a context manager that will notify you of the type of exit that was encountered, including whether it finished with or without an error.
Save bot information in settings by using:
Отправка уведомлений через телеграм бота на python (питон)
telegram_notifier —chat_id XXXX —token YYYY
- XXXX the unique identifier for a target chat (chat id).
- YYYY the bot token.
Send a message to a chat once the settings are saved:
telegram_notifier —message ZZZZ
- ZZZZ the message to send.
Disclaimer
The author of this software is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Telegram or any of its affiliates and is independently owned and created.
Источник: pypi.org
Уведомления о курсе Bitcoin
Приветствуем в специальной рубрике Python Проекты для новичков!
В данной статье мы будем создавать сервис уведомлений о ценах на биткоин. В ходе этого проекта, вы узнаете больше о запросах HTTP и о том, как их рассылать при помощи (как удобно) пакета requests на примерах.
Вы узнаете побольше о webhook, и как их использовать для подключения вашего приложения Python к внешним сервисам, таким как уведомления в телефоне или сообщения Telegram.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат
Оба апплета будут инициированы нашим приложением Python, которое будет использовать данные из Coinmarketcap.
Апплет IFTTT состоит из двух частей: триггер и действие.
В нашем случае, триггером будет сервис webhook (далее – вебхук), предоставляемый IFTTT. Вы можете расценивать webhook как «пользовательские обратные вызовы HTTP», с которыми вы можете поближе ознакомиться в интернете.
Наше приложение Python будет создавать HTTP запрос для URL вебхука, который вызовет действие. Сейчас веселая часть – этим действием может быть практически все, что придет в голову. IFTTT предоставляет множество действий, таких как отправка email, обновление таблиц Google, даже звонок на ваш телефон.
Настройка проекта
Начнем с настройки виртуальной среды. Запустите эту команду, чтобы получить новую виртуальную среду Python 3:
mkvirtualenv — p $ ( which python3 ) bitcoin_notifications
Перед тем, как продолжить, вам нужно активировать виртуальную среду и установить необходимые зависимости:
$ workon bitcoin _ notifications # активация виртуальной среды
$ pip install requests == 2.18.4 # нам нужен только пакет requests
Вы можете деактивировать виртуальное пространство, запустив команду оболочки deactivate.
Получаем цену на биткоин
Теперь немного грязной работы. Мы можем начать с получения последней цены на биткоин из интерфейса Coinmarketcap в консоли Python:
Для начала, нам нужно импортировать модуль requests и определить переменную bitcoin_api_url, которая содержит URL интерфейса Coinmarketcap для биткоина.
Далее, мы отсылаем запрос HTTP GET по ссылке, используя функцию requests.get() и сохраняем ответ. Так как интерфейс (API) выдает ответ в формате json, мы можем конвертировать его в объект Python, вызвав функцию .json() в ответе. Как вы видите, интерфейс выдал список с одним элементом, содержащим данные о курсе биткоина:
import requests
bitcoin_api_url = ‘https://api.coinmarketcap.com/v1/ticker/bitcoin/’
response = requests . get ( bitcoin_api_url )
response_json = response . json ( )
print ( type ( response_json ) ) #
print ( response_json [ 0 ] )
< ‘id’ : ‘bitcoin’ , ‘name’ : ‘Bitcoin’ , ‘symbol’ : ‘BTC’ , ‘rank’ : ‘1’ ,
‘price_usd’ : ‘10226.7’ , ‘price_btc’ : ‘1.0’ , ’24h_volume_usd’ : ‘7585280000.0’ ,
‘market_cap_usd’ : ‘172661078165’ , ‘available_supply’ : ‘16883362.0’ ,
‘total_supply’ : ‘16883362.0’ , ‘max_supply’ : ‘21000000.0’ ,
‘percent_change_1h’ : ‘0.67’ , ‘percent_change_24h’ : ‘0.78’ ,
‘percent_change_7d’ : ‘-4.79’ , ‘last_updated’ : ‘1519465767’ >
Вещь, которая нас интересует больше всего – это ‘price_usd‘ — цена на биткоин в долларах США.
Отправка тестового уведомления IFTTT
Теперь мы можем перейти к части IFTTT. Чтобы использовать IFTTT, вам, в первую очередь, нужно завести новый аккаунт и установить их мобильное приложение (если вы хотите получать уведомления от вашего приложения Python именно на телефон). После того, как вы сделаете это, мы перейдем к созданию нового апплета IFTTT для тестовых нужд.
Для создания нового тестового апплета, нужно выполнить следующее:
- нажать на большую кнопку “this”;
- найти сервис “webhooks” и выбрать триггер “Receive a web request”;
- назовем событие test_event;
- теперь жмем на большую кнопку “that”;
- ищем сервис уведомлений “notifications” и выбираем “Send a notification from the IFTTT app” (отправить уведомление с приложения IFTTT);
- Меняем сообщение на «I just triggered my first IFTTT action!» ( с анг. я только что тригернул мое первое действие в IFTTT!) и жмем на “Create action”;
- Нажимаем на кнопку “Finish”. Это все.
Рекомендуем ознакомиться с документацией об использовании вебхуков IFTTT. Документация содержит URL вебхука, который выглядит вот так:
https : / / maker .ifttt .com / trigger / < event >/ with / key / < your — IFTTT — key >
Далее, нам нужно заменить часть любым названием, которое вы дали в третьем шаге, создавая апплет. Часть уже заполнена вашим ключом IFTTT.
Теперь копируем URL вебхука и запускаем еще одну консоль Python. Мы снова импортируем модуль requests и определяем переменную URL вебхука. Теперь нам остается только запрос HTTP POST URL-у вебхука IFTTT используя функцию requests.post():
import requests
# Убедитесь в том, что ваш ключ находится в URL.
ifttt_webhook_url = ‘https://maker.ifttt.com/trigger/test_event/with/key/’
requests . post ( ifttt_webhook_url )
После запуска последней строки, вы должны увидеть уведомление в вашем телефоне:
Создание апплетов IFTTT
Теперь мы наконец готовы к тому, чтобы приступить к главной части. Перед тем как перейти к коду, нам нужно создать два новых апплета IFTTT: один для срочных уведомлений о курсе биткоина, второй – для регулярных обновлений.
Апплет для срочных уведомлений о курсе биткоина:
- Выбираем сервис “webhooks”, после этого выбираем триггер “Receive a web request” (получить веб запрос);
- Называем событие bitcoin_price_emergency
- Для действия выбираем сервис “Notifications” и выбираем действие “Send a rich notification from the IFTTT app” (прислать подробное уведомление от приложение IFTTT);
- Выбираем заголовок, например «Курс биткоина, срочно!»
- Прописываем сообщение, например: «Курс биткоина в долларах США > Покупайте или продавайте сейчас!» (мы вернемся к > попозже);
- На свой вкус вы можете добавить линк URL-а страницы биткоина Coinmarketcap.
- Создаем действие и заканчиваем настройку апплета.
Апплет для регулярных уведомлений:
- Снова выбираем сервис “webhooks” и выбираем триггер “Receive a web request”;
- Называем событие bitcoin_price_update;
- Для действия выбираем сервис “Telegram” и выбираем действие “Send message”;
- Прописываем текст сообщение, например: «Актуальная цена на биткоин: >»
- Создаем действие и заканчиваем с апплетом.
Обратите внимание: При создании апплета вам нужно провести авторизацию бота IFTTT в Telegram.
Собираем все это вместе
Теперь, когда у нас есть IFTTT, приступим к написанию кода! Вам нужно будет начать с создания стандартного командного скелета приложения Python, показанного ниже. Используйте этот код и сохраните файл под названием bitcoin_notifications.py:
bitcoin_notifications.py
import requests
import time
from datetime import datetime
if __name__ == ‘__main__’ :
Далее, нам нужно перенести две предыдущие сессии консоли Python в две функции, которые будут выдавать последние данные о курсе биткоина и постить в вебхук IFTTT соответственно. Добавьте следующие функции над основными функциями:
BITCOIN_API_URL = ‘https://api.coinmarketcap.com/v1/ticker/bitcoin/’
IFTTT_WEBHOOKS_URL = ‘https://maker.ifttt.com/trigger/<>/with/key/’
def get_latest_bitcoin_price ( ) :
response = requests . get ( BITCOIN_API_URL )
response_json = response . json ( )
# Конвертирует курс в число с плавающей запятой
return float ( response_json [ 0 ] [ ‘price_usd’ ] )
def post_ifttt_webhook ( event , value ) :
# Вставка желаемого события
ifttt_event_url = IFTTT_WEBHOOKS_URL . format ( event )
# Отправка запроса HTTP POST в URL вебхука
requests . post ( ifttt_event_url , json = data )
get_latest_bitcoin_price, в целом, выполняется таким же образом, за одним исключением: часть где нам нужно конвертировать цену из строки в число с плавающей запятой. post_ifttt_webhook принимает два параметра: событие и значение.
Параметр event соответствует любому названию, которое мы дали нашему триггеру при настройке апплета IFTTT. Кстати, вебхуки IFTTT позволяют нам отправлять дополнительные данные вместе с запросом в качестве данных в формате JSON.
Поэтому нам нужен параметр value: При настройке наших апплетов мы оставили тег > в поле сообщения. Это тег был заменен на текст ‘value1‘ из данных JSON. Функция requests.post() позволяет нам отправлять дополнительные данные JSON, просто добавив ключевое слово json.
Теперь мы можем перейти к ядру нашего приложения в функции main. Она будет состоять из вечного цикла while True, поскольку мы хотим, чтобы наше приложение работало всегда. В цикле мы можем вызвать интерфейс Coinmarketcap для получения последних данных о курсе биткоина и записать актуальные дату и время.
На основании нынешнего курса, мы будем решать, нужно ли отправлять срочное уведомление. Для регулярных обновлений в Telegram мы добавим нынешний курс и дату в список bitcoin_history. После того, как содержимое списка достигнет определенного количества (к примеру, 5), мы отформатируем содержимое, отправим обновление в Telegram и сбросим историю для будущих обновлений.
Фух! Как видите, в этом приложении происходит много всякого. Если вы испытываете сложности в понимании происходящего, сделайте небольшой перерыв и перечитайте предыдущий раздел еще раз, внимательно. Это не самая простая затея, так что уделите время и не переживайте из-за того, что с первого раза все выйдет не совсем гладко.
Важный момент: старайтесь не рассылать запросы слишком часто. На это есть две причины:
- В Coinmarketcap утверждают, что они обновляют свои данные каждые 5 минут, так что нет смысла в обновлении данных о курсе на биткоин чаще этого интервала;
- Если ваше приложение отправляет слишком много запросов Coinmarketcap, ваш IP могут отправить в бан, или временно заблокировать.
По этой причине нам нужно «пойти отдохнуть» (остановить выполнение цикла) как минимум на 5 минут, перед получением новых данных. Написанный ниже код выполняет все необходимые функции, которые только что были упомянуты:
Источник: python-scripts.com