2017-08-12 2 views
-1

Je veux faire un télégramme Bot pour le salaire mensuel. l'utilisateur envoie le nom d'utilisateur, puis mot de passe. le bot envoie les informations de salaire. Le problème est ici, l'utilisateur envoie la commande du salaire, Je veux envoyerComment attendre la réponse de l'utilisateur et garder la réponse pour sélectionner

bot: user name 
user: tiger 
bot: password 
user: 985468 

J'ai un problème d'attente pour l'utilisateur et aussi garder pour le premier message (nom d'utilisateur).

+2

garder un enregistrement de vos utilisateurs données en db, fichier ou meilleure solution: redis. – tashakori

Répondre

2

API de télégramme ne vous permet pas de le faire. Vous pouvez le faire avec plusieurs méthodes cependant.

  • vous pouvez utiliser votre base de données pour stocker l'état de cette conversation
  • vous pouvez demander à l'utilisateur de répondre à vos messages afin que vous puissiez vérifier quel message la réponse est à
  • vous pouvez utiliser les claviers inline quand il est possibile (un choix pour sélectionner) afin que vous puissiez vérifier la callback_data
  • vous pouvez demander à l'utilisateur de démarrer le message avec un mot-clé particulier
  • vous pouvez demander à l'utilisateur d'écrire tout dans un seul message de division peut-être avec un char, puis vous divisez ce char

Maintenant, quoi de mieux pour l'utilisateur?

  • pour l'utilisateur est mieux la première option, de sorte que vous stockez l'état de la conversation dans la base de données et après le bot reçoit le message de vérifier l'état de la conversation et vous obtenez ce qu'on appelle

Quoi de mieux pour vous?

  • je dirais que pour vous est préférable d'utiliser le hack de réponse, de sorte que vous n'avez pas besoin d'une base de données pour stocker l'état du chat chaque utilisateur. Vous pouvez utiliser le paramètre force_reply pour le rendre plus clair pour l'utilisateur.

  • Je recommanderais d'utiliser les claviers en ligne quand c'est possible parce qu'ils facilitent les choses en utilisant callback_data. par exemple vous demandez l'âge à l'utilisateur et vous pouvez répondre avec 80 boutons (100 est la limite) et il pourrait appuyer sur le bon âge. C'est mieux car vous n'avez pas à vous soucier de cas étranges lorsque l'utilisateur écrit du texte au lieu de chiffres (par exemple, il écrit ten au lieu de 10) et vous n'avez pas besoin de vérifier l'état sur la base de données ou de vérifier une réponse. vous venez de vérifier les callback_data. Une idée est que chaque bouton pourrait avoir un callback_data commençant par "age_ {age option}" et vous gérer les callback_data en commençant par age_ en ne prenant que la dernière partie.vous n'avez pas besoin de db, vous n'avez pas besoin de vérifier les réponses, vous n'avez pas besoin de gérer les cas étranges lorsque l'utilisateur envoie un mauvais format, vous devez seulement gérer le rappel

1

Conserver User Action Step et User Input Data dans DataBase. et dans chaque message reçu, vérifiez User Action Step pour effectuer le travail correct.

1

Vous pouvez envoyer Hi Sean, please enter your password avec ForceReply et lire le champ .message.reply_to_message.text.

Je pense que c'est la seule façon de résoudre ce problème, mais je vous suggère d'utiliser votre propre base de données comme d'autres réponses.

+0

d'abord je devrais obtenir le nom d'utilisateur puis mot de passe – Morteza