commands

telegram 대화창에 /명령 형태로 전달

/dm_oncall 메시지를 python 코드로 확인 후 message 전달

--------------

@bot.message_handler(commands=['dm_oncall'])
    def trigger(message):
        print("## bot.message_handler dm_oncall message => ", message)
        print("## bot.message_handler dm_oncall message.text => ", message.text)

        cmd = message.text
		
		#message send 
		msg_text = """ Select Day """
		bot.send_message(message.chat.id, msg_text)
		
		#button message send 
        button_list = show_button(["Yesterday", "Today", "Tomorrow"],"oncall", 1)
        bot.send_message(message.chat.id, "당직을 확인할 날짜를 선택하세요", reply_markup=button_list)

call_back

telegram의 대화가 출력되는 부분에 버튼 형태로 전달

버튼이름은 대화창에 출력되고, call_back 변수에 지정한 메시지는 대화창에 보여지지 않고 백그라운드에서 python에서 mssage를 캡쳐하여 처리 가능

php 코드로 telegram에 버튼형태로 call_back에 message 추가하여 전달

---------

$body = file_get_contents("php://input");
$obj = json_decode($body);
$bot_query = 'https://api.telegram.org/bot'.$obj->bot_token;
$chat_id = $obj->chat_id;

# send text
$text = 'Keyboard message test !!';

$keyboard = array(
    "inline_keyboard" => array(
        array(
            array(
                "text" => "Manager",
                "callback_data" => "/manager test"
            )
        )
    )
);
$keyboard = json_encode($keyboard, true);

$sendto = $bot_query.'/sendMessage?chat_id='.$chat_id.'&parse_mode=HTML&reply_markup='.$keyboard.'&text='.urlencode($text);

$response = file_get_contents($sendto);

Keyboard Button

telegram의 대화창에 아닌, 메시지 입력창에 버튼형태로 메시지를 전달

 

python 코드로 메시지 입력창에 버튼 형태로 전달

-----------

import telebot
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, ReplyKeyboardMarkup

token = '14????????:XXXXXXX_XXXXX-XXXXXXXXXXXXXXX'
bot = telebot.TeleBot(token)


@bot.callback_query_handler(func=lambda c: "manager" in c.data.split(",")[0])
def manager_callback(call):

    print("## bot.callback_query_handler call.data => ", call.data)
    print("## bot.callback_query_handler call.message => ", call.message)

    try:
        data_selected = call.data

        data_oncall_Yesterday = '/dm_oncall ,Yesterday'
        data_oncall_Today = '/dm_oncall ,Today'
        data_oncall_Tomorrow = '/dm_oncall ,Tomorrow'
        data_oncall_Cancel = '/Cancel'

        main_menu_keyboard = {"keyboard":[[data_oncall_Yesterday],[data_oncall_Today],[data_oncall_Tomorrow],[data_oncall_Cancel]],"resize_keyboard": True,"one_time_keyboard": True}
        print("## main_menu_keyboard => ", main_menu_keyboard)

        bot.send_message(chat_id=call.message.chat.id, text='Select Menu.', reply_markup=json.dumps(main_menu_keyboard))

    except BaseException as e:
        print("## [Exception] manager_callback ==> ",str(e))

 

참고

https://blog.psangwoo.com/coding/2018/08/20/python-telegram-bot-4.html

 


to Top