2016-04-07 9 views
0

Hallo, ich habe ein paar Probleme mit meinem Telegramm Bot, in Ruby mit 'telegrammer' Client entwickelt.Benutzerdefinierte Tastatur • Telegramm Bot in Ruby

1)

when '/lottery' 
    question = 'choose a number:' 
    answers = 
     Telegram::Bot::Types::ReplyKeyboardMarkup.new(
     keyboard: [ 
     ["1", "2", "3"], 
     ["4", "5", "6"], 
     ["7", "8", "9"], 
     [" ", "0", " "] 
     ], 

     one_time_keyboard: true 
    ) 

    bot.api.sendMessage(chat_id: message.chat.id, text: question, reply_markup: answers) 

Wie kann ich mit der Antwort des Benutzers interagieren? Wie

if answers == "1" 
    bot.api.sendMessage(chat_id: message.chat.id, text: "You have selected 1", reply_markup: answers) 
end 

2) Wie kann ich

/*** @ benutzer1

und dann den Bot einen Befehl wie

lesen sagt

@ user1 die @ user sag dir ***

Vielen Dank im Voraus ...

+0

Haben Sie eine Lösung dafür gefunden? –

+0

Ich erinnere mich nicht, aber ich denke nicht, ich habe aufgehört, an Telegrammen zu arbeiten, tut mir leid – rawnly

+1

In Ordnung! Kein Problem! Vorläufig könnte ich eine Arbeit ausführen, indem ich die Befehle in der Inline-Tastatur vordefiniere, die der Benutzer automatisch auswählen kann. –

Antwort

1

1.
Wenn ein Benutzer etwas auf der Tastatur klickt, gibt es keinen speziellen Befehl gesendet. Es spielt keine Rolle, ob ein Benutzer, der auf die "1" klickt, einfach eine Nachricht mit "1" an den Bot schickt (vorausgesetzt, der Bot empfängt diese Nachricht). So erhalten Sie nur die Standarddaten wie

"message" : { 
    "text" : "1" 
    #... 
} 

So werden Sie wahrscheinlich einen Code haben, ich weiß nicht,

#If message text equals '1' 
when '1' 
    #Do something 

2.
sieht diesen, wie die ‚telegrammer‘ Client-Werke , aber es ist wahrscheinlich die am besten, wenn Sie zuerst überprüfen, ob der Nachrichtentext eine bestimmte regex entspricht. Wenn der Text übereinstimmt, müssen Sie nur den Nachrichtentext teilen, um die gewünschten Teile zu erhalten, damit Sie Ihre Antwort erstellen können.

+0

'When '1' verhält sich jedoch wie ein Befehl und nicht wie eine Benutzereingabe für einen bestimmten Befehl! Ich denke, sollte ich 'def()' verwenden und dieses 'def nennen, wenn der Benutzer diesen bestimmten Befehl eingibt? –