Как отправить личное сообщение по идентификатору chat_id в Telegram с помощью бота на Python 3

#python-3.x #telegram #telegram-bot #message #python-telegram-bot

Вопрос:

Я должен создать бота, который будет публиковать сообщения и кнопки в группе, а участники группы будут отвечать на эти кнопки в группе. Поэтому при запросе обратного вызова я показываю им предупреждающее сообщение,

И теперь я хочу отправить Личное сообщение каждому респонденту прямо в его почтовый ящик, а не в группу.

 from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update, ReplyKeyboardMarkup
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler, CallbackContext

def start(update: Update, context: CallbackContext) -> None:
    """Sends a message with three inline buttons attached."""
    keyboard = [
        [InlineKeyboardButton("opt_a", callback_data='A')],
        [InlineKeyboardButton("opt_b", callback_data='B')],
        [InlineKeyboardButton("opt_c", callback_data='C')],

    ]

    reply_markup = InlineKeyboardMarkup(keyboard, resize_keyboard=False)
    update.message.reply_text("Question: Please Select an Option", reply_markup=reply_markup)


def button(update: Update, context: CallbackContext) -> None:
    """Parses the CallbackQuery and show the alert."""
    query = update.callback_query
    query.answer(text=f"Thanks for responding", show_alert=True)

    #############################################################
    Chat_id = query.message.chat.id
 

То, что мне нужно сделать, находится в приведенной ниже строке кода

 # Send_Private_Message(chat_id=Chat_id, message_text = "Text of the message will b here...")
 

Теперь здесь я хочу отправить Личное сообщение пользователю, который отвечает
на встроенную клавиатуру, я получил его идентификатор Чата здесь выше в переменной «Chat_id»,
но не смог найти способ отправить личное сообщение этому человеку по его «Chat_id».

 updater = Updater("TOKEN")

updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(CallbackQueryHandler(button))

# Start the Bot
updater.start_polling()

# Bot in Idle Position
updater.idle()
 

Ответ №1:

Вы можете использовать этот Bot.send_message метод. экземпляр бота доступен как context.bot . Обратите внимание, что (update.)message.reply_text это всего лишь ярлык для send_message 😉


Отказ от ответственности: В настоящее время я являюсь сопровождающим python-telegram-bot