MikaBA
MikaBA

Reputation: 57

Telegram Bot Python Inlinekeyboardmarkup does not work for all users in a group

I want to respond when someone sends the /start comand and display a text with a like/dislike button in a group.

Here is my sample code:

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

import logging

FIRST, SECOND = range(2)

keyboard = [[InlineKeyboardButton('👍', callback_data='0'),
            InlineKeyboardButton('👎', callback_data='2')]]


def start(update, context):
    reply_markup = InlineKeyboardMarkup(keyboard)
    update.message.reply_text(
        'Test Message\n',
        reply_markup=reply_markup
    )

    return FIRST


def main():
    updater = Updater(
        'TOKEN', use_context=True)
    dp = updater.dispatcher
    conv_handler = ConversationHandler(
        entry_points=[CommandHandler('start', start)],
        states={
            FIRST: [CallbackQueryHandler(a, pattern='^'+str(0)+'$'),
                    CallbackQueryHandler(b, pattern='^'+str(2)+'$')]
        },
        fallbacks=[CommandHandler('start', start)]
    )

    dp.add_handler(conv_handler)
    updater.start_polling()
    updater.idle()

if __name__ == "__main__":
    main()

The callbacks only work for the user who sent the /start command. Other users cannot click the button or there is no callback. if another user sends a /start command, both like/dislike buttons of both posts of the bot work for the two users.

Where is the mistake? I want every user to be able to press the buttons and it triggers a callback. regardless of whether the user has ever sent the /start command

I am thankful for every help.

Upvotes: 0

Views: 890

Answers (1)

CallMeStag
CallMeStag

Reputation: 7050

The issue here is that by default conversations are per user - please also see this faq entry for details. For your use case, I doubt that a ConversationHandler gives you any benefit. I would just register the CommandHandler and the CallbackQueryHandler independently.


Disclaimer: I'm currently the maintainer of python-telegram-bot.

Upvotes: 2

Related Questions