prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Typo in comment in conversationbot2.py
  <!--
  Thanks for reporting issues of python-telegram-bot!
  
  Use this template to notify us if you found a bug, or if you want to request a new feature.
  If you're looking for help with programming your bot using our library, feel free to ask your
  questions in out telegram group at: https://t.me/pythontelegrambotgroup
  
  To make it easier for us to help you please enter detailed information below.
  
  Please note, we only support the latest version of python-telegram-bot and
  master branch. Please make sure to upgrade & recreate the issue on the latest
  version prior to opening an issue.
  -->
  ### Steps to reproduce
  1. Not really a bug... wrong comment line in conversationbot2.py :)
  
  ### Expected behaviour
  Should be: # Add conversation handler with the states CHOOSING, TYPING_CHOICE and TYPING_REPLY
  
  ### Actual behaviour
  Actual comment in conversationbot2.py (leftover from conversationbot.py I guess :))
  # Add conversation handler with the states GENDER, PHOTO, LOCATION and BIO
  
  ### Configuration
  **Operating System:**
  Windows
  
  **Version of Python, python-telegram-bot & dependencies:**
  3.6
  
  ``$ python -m telegram``
  
  ### Logs
  Insert logs here (if necessary)
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `examples/conversationbot2.py`
  Content:
  ```
  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 #
  4 # Simple Bot to reply to Telegram messages
  5 # This program is dedicated to the public domain under the CC0 license.
  6 """
  7 This Bot uses the Updater class to handle the bot.
  8 
  9 First, a few callback functions are defined. Then, those functions are passed to
  10 the Dispatcher and registered at their respective places.
  11 Then, the bot is started and runs until we press Ctrl-C on the command line.
  12 
  13 Usage:
  14 Example of a bot-user conversation using ConversationHandler.
  15 Send /start to initiate the conversation.
  16 Press Ctrl-C on the command line or send a signal to the process to stop the
  17 bot.
  18 """
  19 
  20 from telegram import ReplyKeyboardMarkup
  21 from telegram.ext import (Updater, CommandHandler, MessageHandler, Filters, RegexHandler,
  22                           ConversationHandler)
  23 
  24 import logging
  25 
  26 # Enable logging
  27 logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
  28                     level=logging.INFO)
  29 
  30 logger = logging.getLogger(__name__)
  31 
  32 CHOOSING, TYPING_REPLY, TYPING_CHOICE = range(3)
  33 
  34 reply_keyboard = [['Age', 'Favourite colour'],
  35                   ['Number of siblings', 'Something else...'],
  36                   ['Done']]
  37 markup = ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True)
  38 
  39 
  40 def facts_to_str(user_data):
  41     facts = list()
  42 
  43     for key, value in user_data.items():
  44         facts.append('{} - {}'.format(key, value))
  45 
  46     return "\n".join(facts).join(['\n', '\n'])
  47 
  48 
  49 def start(bot, update):
  50     update.message.reply_text(
  51         "Hi! My name is Doctor Botter. I will hold a more complex conversation with you. "
  52         "Why don't you tell me something about yourself?",
  53         reply_markup=markup)
  54 
  55     return CHOOSING
  56 
  57 
  58 def regular_choice(bot, update, user_data):
  59     text = update.message.text
  60     user_data['choice'] = text
  61     update.message.reply_text(
  62         'Your {}? Yes, I would love to hear about that!'.format(text.lower()))
  63 
  64     return TYPING_REPLY
  65 
  66 
  67 def custom_choice(bot, update):
  68     update.message.reply_text('Alright, please send me the category first, '
  69                               'for example "Most impressive skill"')
  70 
  71     return TYPING_CHOICE
  72 
  73 
  74 def received_information(bot, update, user_data):
  75     text = update.message.text
  76     category = user_data['choice']
  77     user_data[category] = text
  78     del user_data['choice']
  79 
  80     update.message.reply_text("Neat! Just so you know, this is what you already told me:"
  81                               "{}"
  82                               "You can tell me more, or change your opinion on something.".format(
  83                                   facts_to_str(user_data)), reply_markup=markup)
  84 
  85     return CHOOSING
  86 
  87 
  88 def done(bot, update, user_data):
  89     if 'choice' in user_data:
  90         del user_data['choice']
  91 
  92     update.message.reply_text("I learned these facts about you:"
  93                               "{}"
  94                               "Until next time!".format(facts_to_str(user_data)))
  95 
  96     user_data.clear()
  97     return ConversationHandler.END
  98 
  99 
  100 def error(bot, update, error):
  101     """Log Errors caused by Updates."""
  102     logger.warning('Update "%s" caused error "%s"', update, error)
  103 
  104 
  105 def main():
  106     # Create the Updater and pass it your bot's token.
  107     updater = Updater("TOKEN")
  108 
  109     # Get the dispatcher to register handlers
  110     dp = updater.dispatcher
  111 
  112     # Add conversation handler with the states GENDER, PHOTO, LOCATION and BIO
  113     conv_handler = ConversationHandler(
  114         entry_points=[CommandHandler('start', start)],
  115 
  116         states={
  117             CHOOSING: [RegexHandler('^(Age|Favourite colour|Number of siblings)$',
  118                                     regular_choice,
  119                                     pass_user_data=True),
  120                        RegexHandler('^Something else...$',
  121                                     custom_choice),
  122                        ],
  123 
  124             TYPING_CHOICE: [MessageHandler(Filters.text,
  125                                            regular_choice,
  126                                            pass_user_data=True),
  127                             ],
  128 
  129             TYPING_REPLY: [MessageHandler(Filters.text,
  130                                           received_information,
  131                                           pass_user_data=True),
  132                            ],
  133         },
  134 
  135         fallbacks=[RegexHandler('^Done$', done, pass_user_data=True)]
  136     )
  137 
  138     dp.add_handler(conv_handler)
  139 
  140     # log all errors
  141     dp.add_error_handler(error)
  142 
  143     # Start the Bot
  144     updater.start_polling()
  145 
  146     # Run the bot until you press Ctrl-C or the process receives SIGINT,
  147     # SIGTERM or SIGABRT. This should be used most of the time, since
  148     # start_polling() is non-blocking and will stop the bot gracefully.
  149     updater.idle()
  150 
  151 
  152 if __name__ == '__main__':
  153     main()
  154
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/examples/conversationbot2.py b/examples/conversationbot2.py
  --- a/examples/conversationbot2.py
  +++ b/examples/conversationbot2.py
  @@ -109,7 +109,7 @@
       # Get the dispatcher to register handlers
       dp = updater.dispatcher
   
  -    # Add conversation handler with the states GENDER, PHOTO, LOCATION and BIO
  +    # Add conversation handler with the states CHOOSING, TYPING_CHOICE and TYPING_REPLY
       conv_handler = ConversationHandler(
           entry_points=[CommandHandler('start', start)],
  
verification_info: {"golden_diff": "diff --git a/examples/conversationbot2.py b/examples/conversationbot2.py\n--- a/examples/conversationbot2.py\n+++ b/examples/conversationbot2.py\n@@ -109,7 +109,7 @@\n     # Get the dispatcher to register handlers\n     dp = updater.dispatcher\n \n-    # Add conversation handler with the states GENDER, PHOTO, LOCATION and BIO\n+    # Add conversation handler with the states CHOOSING, TYPING_CHOICE and TYPING_REPLY\n     conv_handler = ConversationHandler(\n         entry_points=[CommandHandler('start', start)],\n", "issue": "Typo in comment in conversationbot2.py\n<!--\r\nThanks for reporting issues of python-telegram-bot!\r\n\r\nUse this template to notify us if you found a bug, or if you want to request a new feature.\r\nIf you're looking for help with programming your bot using our library, feel free to ask your\r\nquestions in out telegram group at: https://t.me/pythontelegrambotgroup\r\n\r\nTo make it easier for us to help you please enter detailed information below.\r\n\r\nPlease note, we only support the latest version of python-telegram-bot and\r\nmaster branch. Please make sure to upgrade & recreate the issue on the latest\r\nversion prior to opening an issue.\r\n-->\r\n### Steps to reproduce\r\n1. Not really a bug... wrong comment line in conversationbot2.py :)\r\n\r\n### Expected behaviour\r\nShould be: # Add conversation handler with the states CHOOSING, TYPING_CHOICE and TYPING_REPLY\r\n\r\n### Actual behaviour\r\nActual comment in conversationbot2.py (leftover from conversationbot.py I guess :))\r\n# Add conversation handler with the states GENDER, PHOTO, LOCATION and BIO\r\n\r\n### Configuration\r\n**Operating System:**\r\nWindows\r\n\r\n**Version of Python, python-telegram-bot & dependencies:**\r\n3.6\r\n\r\n``$ python -m telegram``\r\n\r\n### Logs\r\nInsert logs here (if necessary)\r\n\n", "before_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n#\n# Simple Bot to reply to Telegram messages\n# This program is dedicated to the public domain under the CC0 license.\n\"\"\"\nThis Bot uses the Updater class to handle the bot.\n\nFirst, a few callback functions are defined. Then, those functions are passed to\nthe Dispatcher and registered at their respective places.\nThen, the bot is started and runs until we press Ctrl-C on the command line.\n\nUsage:\nExample of a bot-user conversation using ConversationHandler.\nSend /start to initiate the conversation.\nPress Ctrl-C on the command line or send a signal to the process to stop the\nbot.\n\"\"\"\n\nfrom telegram import ReplyKeyboardMarkup\nfrom telegram.ext import (Updater, CommandHandler, MessageHandler, Filters, RegexHandler,\n                          ConversationHandler)\n\nimport logging\n\n# Enable logging\nlogging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n                    level=logging.INFO)\n\nlogger = logging.getLogger(__name__)\n\nCHOOSING, TYPING_REPLY, TYPING_CHOICE = range(3)\n\nreply_keyboard = [['Age', 'Favourite colour'],\n                  ['Number of siblings', 'Something else...'],\n                  ['Done']]\nmarkup = ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True)\n\n\ndef facts_to_str(user_data):\n    facts = list()\n\n    for key, value in user_data.items():\n        facts.append('{} - {}'.format(key, value))\n\n    return \"\\n\".join(facts).join(['\\n', '\\n'])\n\n\ndef start(bot, update):\n    update.message.reply_text(\n        \"Hi! My name is Doctor Botter. I will hold a more complex conversation with you. \"\n        \"Why don't you tell me something about yourself?\",\n        reply_markup=markup)\n\n    return CHOOSING\n\n\ndef regular_choice(bot, update, user_data):\n    text = update.message.text\n    user_data['choice'] = text\n    update.message.reply_text(\n        'Your {}? Yes, I would love to hear about that!'.format(text.lower()))\n\n    return TYPING_REPLY\n\n\ndef custom_choice(bot, update):\n    update.message.reply_text('Alright, please send me the category first, '\n                              'for example \"Most impressive skill\"')\n\n    return TYPING_CHOICE\n\n\ndef received_information(bot, update, user_data):\n    text = update.message.text\n    category = user_data['choice']\n    user_data[category] = text\n    del user_data['choice']\n\n    update.message.reply_text(\"Neat! Just so you know, this is what you already told me:\"\n                              \"{}\"\n                              \"You can tell me more, or change your opinion on something.\".format(\n                                  facts_to_str(user_data)), reply_markup=markup)\n\n    return CHOOSING\n\n\ndef done(bot, update, user_data):\n    if 'choice' in user_data:\n        del user_data['choice']\n\n    update.message.reply_text(\"I learned these facts about you:\"\n                              \"{}\"\n                              \"Until next time!\".format(facts_to_str(user_data)))\n\n    user_data.clear()\n    return ConversationHandler.END\n\n\ndef error(bot, update, error):\n    \"\"\"Log Errors caused by Updates.\"\"\"\n    logger.warning('Update \"%s\" caused error \"%s\"', update, error)\n\n\ndef main():\n    # Create the Updater and pass it your bot's token.\n    updater = Updater(\"TOKEN\")\n\n    # Get the dispatcher to register handlers\n    dp = updater.dispatcher\n\n    # Add conversation handler with the states GENDER, PHOTO, LOCATION and BIO\n    conv_handler = ConversationHandler(\n        entry_points=[CommandHandler('start', start)],\n\n        states={\n            CHOOSING: [RegexHandler('^(Age|Favourite colour|Number of siblings)$',\n                                    regular_choice,\n                                    pass_user_data=True),\n                       RegexHandler('^Something else...$',\n                                    custom_choice),\n                       ],\n\n            TYPING_CHOICE: [MessageHandler(Filters.text,\n                                           regular_choice,\n                                           pass_user_data=True),\n                            ],\n\n            TYPING_REPLY: [MessageHandler(Filters.text,\n                                          received_information,\n                                          pass_user_data=True),\n                           ],\n        },\n\n        fallbacks=[RegexHandler('^Done$', done, pass_user_data=True)]\n    )\n\n    dp.add_handler(conv_handler)\n\n    # log all errors\n    dp.add_error_handler(error)\n\n    # Start the Bot\n    updater.start_polling()\n\n    # Run the bot until you press Ctrl-C or the process receives SIGINT,\n    # SIGTERM or SIGABRT. This should be used most of the time, since\n    # start_polling() is non-blocking and will stop the bot gracefully.\n    updater.idle()\n\n\nif __name__ == '__main__':\n    main()\n", "path": "examples/conversationbot2.py"}], "after_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n#\n# Simple Bot to reply to Telegram messages\n# This program is dedicated to the public domain under the CC0 license.\n\"\"\"\nThis Bot uses the Updater class to handle the bot.\n\nFirst, a few callback functions are defined. Then, those functions are passed to\nthe Dispatcher and registered at their respective places.\nThen, the bot is started and runs until we press Ctrl-C on the command line.\n\nUsage:\nExample of a bot-user conversation using ConversationHandler.\nSend /start to initiate the conversation.\nPress Ctrl-C on the command line or send a signal to the process to stop the\nbot.\n\"\"\"\n\nfrom telegram import ReplyKeyboardMarkup\nfrom telegram.ext import (Updater, CommandHandler, MessageHandler, Filters, RegexHandler,\n                          ConversationHandler)\n\nimport logging\n\n# Enable logging\nlogging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n                    level=logging.INFO)\n\nlogger = logging.getLogger(__name__)\n\nCHOOSING, TYPING_REPLY, TYPING_CHOICE = range(3)\n\nreply_keyboard = [['Age', 'Favourite colour'],\n                  ['Number of siblings', 'Something else...'],\n                  ['Done']]\nmarkup = ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True)\n\n\ndef facts_to_str(user_data):\n    facts = list()\n\n    for key, value in user_data.items():\n        facts.append('{} - {}'.format(key, value))\n\n    return \"\\n\".join(facts).join(['\\n', '\\n'])\n\n\ndef start(bot, update):\n    update.message.reply_text(\n        \"Hi! My name is Doctor Botter. I will hold a more complex conversation with you. \"\n        \"Why don't you tell me something about yourself?\",\n        reply_markup=markup)\n\n    return CHOOSING\n\n\ndef regular_choice(bot, update, user_data):\n    text = update.message.text\n    user_data['choice'] = text\n    update.message.reply_text(\n        'Your {}? Yes, I would love to hear about that!'.format(text.lower()))\n\n    return TYPING_REPLY\n\n\ndef custom_choice(bot, update):\n    update.message.reply_text('Alright, please send me the category first, '\n                              'for example \"Most impressive skill\"')\n\n    return TYPING_CHOICE\n\n\ndef received_information(bot, update, user_data):\n    text = update.message.text\n    category = user_data['choice']\n    user_data[category] = text\n    del user_data['choice']\n\n    update.message.reply_text(\"Neat! Just so you know, this is what you already told me:\"\n                              \"{}\"\n                              \"You can tell me more, or change your opinion on something.\".format(\n                                  facts_to_str(user_data)), reply_markup=markup)\n\n    return CHOOSING\n\n\ndef done(bot, update, user_data):\n    if 'choice' in user_data:\n        del user_data['choice']\n\n    update.message.reply_text(\"I learned these facts about you:\"\n                              \"{}\"\n                              \"Until next time!\".format(facts_to_str(user_data)))\n\n    user_data.clear()\n    return ConversationHandler.END\n\n\ndef error(bot, update, error):\n    \"\"\"Log Errors caused by Updates.\"\"\"\n    logger.warning('Update \"%s\" caused error \"%s\"', update, error)\n\n\ndef main():\n    # Create the Updater and pass it your bot's token.\n    updater = Updater(\"TOKEN\")\n\n    # Get the dispatcher to register handlers\n    dp = updater.dispatcher\n\n    # Add conversation handler with the states CHOOSING, TYPING_CHOICE and TYPING_REPLY\n    conv_handler = ConversationHandler(\n        entry_points=[CommandHandler('start', start)],\n\n        states={\n            CHOOSING: [RegexHandler('^(Age|Favourite colour|Number of siblings)$',\n                                    regular_choice,\n                                    pass_user_data=True),\n                       RegexHandler('^Something else...$',\n                                    custom_choice),\n                       ],\n\n            TYPING_CHOICE: [MessageHandler(Filters.text,\n                                           regular_choice,\n                                           pass_user_data=True),\n                            ],\n\n            TYPING_REPLY: [MessageHandler(Filters.text,\n                                          received_information,\n                                          pass_user_data=True),\n                           ],\n        },\n\n        fallbacks=[RegexHandler('^Done$', done, pass_user_data=True)]\n    )\n\n    dp.add_handler(conv_handler)\n\n    # log all errors\n    dp.add_error_handler(error)\n\n    # Start the Bot\n    updater.start_polling()\n\n    # Run the bot until you press Ctrl-C or the process receives SIGINT,\n    # SIGTERM or SIGABRT. This should be used most of the time, since\n    # start_polling() is non-blocking and will stop the bot gracefully.\n    updater.idle()\n\n\nif __name__ == '__main__':\n    main()\n", "path": "examples/conversationbot2.py"}]}