Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python电报bot在bot中显示警报_Python_Telegram_Python Telegram Bot - Fatal编程技术网

使用python电报bot在bot中显示警报

使用python电报bot在bot中显示警报,python,telegram,python-telegram-bot,Python,Telegram,Python Telegram Bot,在用python Telegrame bot编写的Telegrame bot中,我有一些键盘按钮,当我单击其中一个按钮时,我希望显示一个警报,如下所示: 然而,当我点击按钮时,它什么也不起作用,我不知道出了什么问题。 谢谢大家! 下面是我的代码: from telegram import InlineKeyboardButton, InlineKeyboardMarkup from telegram.ext import ( Updater, CommandHandler,

在用python Telegrame bot编写的Telegrame bot中,我有一些键盘按钮,当我单击其中一个按钮时,我希望显示一个警报,如下所示:

然而,当我点击按钮时,它什么也不起作用,我不知道出了什么问题。 谢谢大家!

下面是我的代码:

from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import (
    Updater,
    CommandHandler,
    CallbackQueryHandler,
)


token = 'XXX'
updater = Updater(token=token, use_context=True)
dispatcher = updater.dispatcher


def start(update, context):
    keyboard = [
        [
            InlineKeyboardButton("dog", callback_data='dog'),
            InlineKeyboardButton("cat", callback_data='cat'),
        ],
    ]

    reply_markup = InlineKeyboardMarkup(keyboard)

    context.bot.send_message(
        chat_id=update.effective_chat.id,
        text=f'Hello {update.message.chat.first_name}!',
        reply_markup=reply_markup,
    )


def buttons(update, context):
    query = update.callback_query

    query.answer()

    if query.data == 'cat':
        context.bot.answer_callback_query(callback_query_id=query.id, text='you chose cat', show_alert=True)
    elif query.data == 'dog':
        context.bot.answer_callback_query(callback_query_id=query.id, text='you chose dog', show_alert=True)


start_handler = CommandHandler('start', start)
dispatcher.add_handler(start_handler)

buttons_handler = CallbackQueryHandler(buttons)
dispatcher.add_handler(buttons_handler)


updater.start_polling()```

您必须删除
query.answer()
,并仅在不想发送警报时发送

def buttons(update, context):
    query = update.callback_query

    # query.answer() # <-- move it to `else:`

    if query.data == 'cat':
        context.bot.answer_callback_query(callback_query_id=query.id, text='you chose cat', show_alert=True)
    elif query.data == 'dog':
        context.bot.answer_callback_query(callback_query_id=query.id, text='you chose dog', show_alert=True)
    else:
        query.answer() # <-- send it only when you have no alert 

我的测试代码-我必须添加
updater.idle()
以保持它运行

#!/usr/bin/env python3.7

import logging

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)

from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import (
    Updater,
    CommandHandler,
    CallbackQueryHandler,
)

token = 'MY_TOKEN'
updater = Updater(token=token, use_context=True)
dispatcher = updater.dispatcher


def start(update, context):
    keyboard = [
        [
            InlineKeyboardButton("dog", callback_data='dog'),
            InlineKeyboardButton("cat", callback_data='cat'),
        ],
    ]

    reply_markup = InlineKeyboardMarkup(keyboard)

#    context.bot.send_message(
#        chat_id=update.effective_chat.id,
#        text=f'Hello {update.message.chat.first_name}!',
#        reply_markup=reply_markup,
#    )

    update.message.reply_text(f'Hello {update.message.chat.first_name}!', reply_markup=reply_markup)


def buttons(update, context):
    logger.info('Update: "%s"\nContext: "%s"', update, context.error)

    query = update.callback_query

    # query.answer() # <-- move it to `else`

    if query.data == 'cat':
        #context.bot.answer_callback_query(callback_query_id=query.id, text='you chose cat', show_alert=True)
        query.answer(text='you chose cat!', show_alert=True)
    elif query.data == 'dog':
        #context.bot.answer_callback_query(callback_query_id=query.id, text='you chose dog', show_alert=True)
        query.answer(text='you chose dog!', show_alert=True)
    else:
        query.answer('nothing')


start_handler = CommandHandler('start', start)
dispatcher.add_handler(start_handler)

buttons_handler = CallbackQueryHandler(buttons)
dispatcher.add_handler(buttons_handler)

updater.start_polling()
print('Running... [Press Ctrl+C to stop]')
updater.idle() # need to keep running
#/usr/bin/env蟒蛇3.7
导入日志记录
logging.basicConfig(格式='%(asctime)s-%(名称)s-%(levelname)s-%(消息)s',级别=logging.INFO)
logger=logging.getLogger(_名称__)
从电报导入InlineKeyboardButton,InlineKeyboardMarkup
从telegram.ext导入(
更新程序,
指挥官,
CallbackQueryHandler,
)
令牌='我的令牌'
updater=updater(token=token,use_context=True)
dispatcher=updater.dispatcher
def启动(更新、上下文):
键盘=[
[
InlineKeyboardButton(“dog”,callback_data='dog'),
InlineKeyboardButton(“cat”,回调数据='cat'),
],
]
reply_markup=InlineKeyboardMarkup(键盘)
#context.bot.send_消息(
#chat\u id=update.effective\u chat.id,
#text=f'Hello{update.message.chat.first_name}!',
#回复标记=回复标记,
#    )
update.message.reply_text(f'Hello{update.message.chat.first_name}!',reply_markup=reply_markup)
def按钮(更新、上下文):
logger.info('更新:“%s”\n上下文:“%s”,更新,上下文.error)
query=update.callback\u查询

#query.answer()。或者学习如何使用调试器。
#!/usr/bin/env python3.7

import logging

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)

from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import (
    Updater,
    CommandHandler,
    CallbackQueryHandler,
)

token = 'MY_TOKEN'
updater = Updater(token=token, use_context=True)
dispatcher = updater.dispatcher


def start(update, context):
    keyboard = [
        [
            InlineKeyboardButton("dog", callback_data='dog'),
            InlineKeyboardButton("cat", callback_data='cat'),
        ],
    ]

    reply_markup = InlineKeyboardMarkup(keyboard)

#    context.bot.send_message(
#        chat_id=update.effective_chat.id,
#        text=f'Hello {update.message.chat.first_name}!',
#        reply_markup=reply_markup,
#    )

    update.message.reply_text(f'Hello {update.message.chat.first_name}!', reply_markup=reply_markup)


def buttons(update, context):
    logger.info('Update: "%s"\nContext: "%s"', update, context.error)

    query = update.callback_query

    # query.answer() # <-- move it to `else`

    if query.data == 'cat':
        #context.bot.answer_callback_query(callback_query_id=query.id, text='you chose cat', show_alert=True)
        query.answer(text='you chose cat!', show_alert=True)
    elif query.data == 'dog':
        #context.bot.answer_callback_query(callback_query_id=query.id, text='you chose dog', show_alert=True)
        query.answer(text='you chose dog!', show_alert=True)
    else:
        query.answer('nothing')


start_handler = CommandHandler('start', start)
dispatcher.add_handler(start_handler)

buttons_handler = CallbackQueryHandler(buttons)
dispatcher.add_handler(buttons_handler)

updater.start_polling()
print('Running... [Press Ctrl+C to stop]')
updater.idle() # need to keep running