54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
# utils/message_sender.py
|
|
from utils.logger import logger
|
|
from telegram import Update, Bot
|
|
from telegram.ext import CallbackContext
|
|
from telegram.error import TelegramError
|
|
from telegram.constants import ParseMode
|
|
|
|
async def send_message(
|
|
update: Update,
|
|
context: CallbackContext,
|
|
text: str,
|
|
parse_mode: str = ParseMode.HTML,
|
|
reply_markup=None,
|
|
disable_web_page_preview: bool = False,
|
|
chat_id: int = None,
|
|
):
|
|
try:
|
|
if chat_id:
|
|
# Отправка по указанному chat_id
|
|
await context.bot.send_message(
|
|
chat_id=chat_id,
|
|
text=text,
|
|
parse_mode=parse_mode,
|
|
reply_markup=reply_markup,
|
|
disable_web_page_preview=disable_web_page_preview
|
|
)
|
|
elif update.message:
|
|
# Отправка в ответ на сообщение
|
|
await update.message.reply_text(
|
|
text=text,
|
|
parse_mode=parse_mode,
|
|
reply_markup=reply_markup,
|
|
disable_web_page_preview=disable_web_page_preview
|
|
)
|
|
elif update.callback_query:
|
|
# Отправка в ответ на callback-запрос
|
|
await update.callback_query.message.reply_text(
|
|
text=text,
|
|
parse_mode=parse_mode,
|
|
reply_markup=reply_markup,
|
|
disable_web_page_preview=disable_web_page_preview
|
|
)
|
|
else:
|
|
raise ValueError("Некорректный тип обновления")
|
|
except TelegramError as e:
|
|
logger.error(f"Ошибка при отправке сообщения: {e}")
|
|
return False
|
|
return True
|
|
|
|
# Вспомогательная функция для получения всех ID (пример)
|
|
def get_all_user_ids():
|
|
# Здесь логика получения всех ID из базы данных
|
|
return [12345, 67890] # Пример списка ID
|