[telegram bot] telegram message commands / call_back / Keyboard Button 처리 ( python, php )
DevOps/DB Monitoring 2021. 9. 28. 01:36
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
'DevOps > DB Monitoring' 카테고리의 다른 글
Telegram 채팅창에 웹브라우저(Web browser)로 message 전송 (0) | 2022.04.13 |
---|---|
[telegram bot] telegram bot 생성 및 python으로 message 전송 (0) | 2021.09.27 |
telegram callback_data is allowed to exceed 64 characters (0) | 2021.09.02 |