ssshmyaks / rubtousd Goto Github PK
View Code? Open in Web Editor NEWEvery 5 seconds Telegram bot sends you the current dollar rate from the central bank. The code uses the Aiogram library
Every 5 seconds Telegram bot sends you the current dollar rate from the central bank. The code uses the Aiogram library
В текущей реализации бота используется цикл while True
, который отправляет запрос каждые 5 секунд. Это может привести к проблемам с использованием ресурсов, особенно при массовом наплыве пользователей. В случае массового использования, бот будет часто сталкиваться с ошибкой 429 ("Too Many Requests"),
что может привести к нежелательным проблемам.
1. Оценить возможность использования асинхронных методов для отправки сообщений, чтобы уменьшить нагрузку на сервер и избежать чрезмерного использования ресурсов.
2. Реализовать механизм обработки ошибок, связанных с получением ошибки 429 ("Too Many Requests")
, включая повторную попытку отправки сообщения через указанный интервал времени (параметр retry_after).
3. Предложить пользователю опцию настройки интервала между запросами, чтобы избежать возможных проблем с ограничениями на частоту запросов.
При проектировании и реализации бота необходимо также учитывать возможные ограничения и правила платформы Telegram, такие как "slow_mode
", который может ограничить частоту отправки сообщений в группах.
Пожалуйста, обратите внимание на то, что даже с обработкой ошибки 429 ("Too Many Requests"), частая отправка сообщений может привести к негативному воздействию на вашего бота и Telegram API. Рекомендую Вам установить разумные интервалы для отправки сообщений и обеспечить возможность настройки этих интервалов пользователем.
import asyncio
import requests
import aiogram
from aiogram import Bot, types
from aiogram.utils import executor
import config
bot = Bot(token=config.TOKEN)
dp = aiogram.Dispatcher(bot)
async def send_currency_rate(chat_id):
try:
# отправляем запрос к цб для получения текущего курса доллара
data = requests.get('https://www.cbr-xml-daily.ru/daily_json.js').json()
# отправляем сообщение с текущим курсом
await bot.send_message(chat_id, data['Valute']['USD']['Value'])
except requests.RequestException as e:
# лбрабатываем ошибку при отправке запроса к цб
print("Ошибка при отправке запроса к Центробанку:", e)
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
while True:
try:
# отправляет текущий курс
await send_currency_rate(message.chat.id)
# ждём 5 секк перед отправкой следующего сообщения
await asyncio.sleep(5)
except aiogram.utils.exceptions.RetryAfter as e:
# ловим 429 ("Too Many Requests")
retry_after = e.timeout
print(f"Слишком много запросов. Повторная попытка через {retry_after} сек.")
await asyncio.sleep(retry_after)
except Exception as e:
# орабатываем другие возможные ошибки
print("Ошибка при отправке сообщения:", e)
if __name__ == '__main__':
# Запускаем бота
executor.start_polling(dp, skip_updates=True)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.