<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://so.v2.cs.unibo.it/wiki/index.php?action=history&amp;feed=atom&amp;title=Codice_del_bot_%28in_Python%29</id>
	<title>Codice del bot (in Python) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://so.v2.cs.unibo.it/wiki/index.php?action=history&amp;feed=atom&amp;title=Codice_del_bot_%28in_Python%29"/>
	<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Codice_del_bot_(in_Python)&amp;action=history"/>
	<updated>2026-04-16T20:26:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Codice_del_bot_(in_Python)&amp;diff=2278&amp;oldid=prev</id>
		<title>Renzo: Created page with &quot;Ecco il codice del bot:  &lt;source lang=python&gt; #!/usr/bin/env python # -*- coding: utf-8 -*-  &quot;&quot;&quot;Simple Bot to reply to Telegram messages.  This program is dedicated to the pub...&quot;</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Codice_del_bot_(in_Python)&amp;diff=2278&amp;oldid=prev"/>
		<updated>2018-11-20T13:45:43Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Ecco il codice del bot:  &amp;lt;source lang=python&amp;gt; #!/usr/bin/env python # -*- coding: utf-8 -*-  &amp;quot;&amp;quot;&amp;quot;Simple Bot to reply to Telegram messages.  This program is dedicated to the pub...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ecco il codice del bot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;Simple Bot to reply to Telegram messages.&lt;br /&gt;
&lt;br /&gt;
This program is dedicated to the public domain under the CC0 license.&lt;br /&gt;
&lt;br /&gt;
This Bot uses the Updater class to handle the bot.&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters&lt;br /&gt;
import logging&lt;br /&gt;
# import random&lt;br /&gt;
&lt;br /&gt;
# Enable logging&lt;br /&gt;
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',&lt;br /&gt;
                    level=logging.INFO)&lt;br /&gt;
&lt;br /&gt;
logger = logging.getLogger(__name__)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Define a few command handlers. These usually take the two arguments bot and&lt;br /&gt;
# update. Error handlers also receive the raised TelegramError object in error.&lt;br /&gt;
&lt;br /&gt;
votes={}&lt;br /&gt;
&lt;br /&gt;
def vote(bot, update):&lt;br /&gt;
    global votes&lt;br /&gt;
    vote = update.message.text&lt;br /&gt;
    user = update.message.chat_id&lt;br /&gt;
    if vote[:5] == '/vote': vote = vote[5:]&lt;br /&gt;
    if vote[:1] == ' ': vote = vote[1:]&lt;br /&gt;
    vote = vote.lower()&lt;br /&gt;
    if user in votes:&lt;br /&gt;
      update.message.reply_text('vote changed to: '+ vote);&lt;br /&gt;
    else:&lt;br /&gt;
      update.message.reply_text('got your vote: '+ vote);&lt;br /&gt;
    votes[user] = vote&lt;br /&gt;
&lt;br /&gt;
def count(bot, update):&lt;br /&gt;
    global votes&lt;br /&gt;
    table = {}&lt;br /&gt;
    for v in votes:&lt;br /&gt;
      vote = votes[v]&lt;br /&gt;
      if vote in table:&lt;br /&gt;
        table[vote] += 1&lt;br /&gt;
      else:&lt;br /&gt;
        table[vote] = 1&lt;br /&gt;
    if table:&lt;br /&gt;
      print &amp;quot;Count results:&amp;quot;&lt;br /&gt;
    for v in sorted(table, key=table.get, reverse=True):&lt;br /&gt;
        print '[{}]: {}'.format(v, table[v])&lt;br /&gt;
    votes = {}&lt;br /&gt;
&lt;br /&gt;
def start(bot, update):&lt;br /&gt;
    update.message.reply_text('Welcome to so_cs_unibot!')&lt;br /&gt;
&lt;br /&gt;
def help(bot, update):&lt;br /&gt;
    update.message.reply_text(&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
This is so_cs_unibot!&lt;br /&gt;
/vote file your vote&lt;br /&gt;
/count vote counting&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  )&lt;br /&gt;
&lt;br /&gt;
def echo(bot, update):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Echo the user message.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print update.message.text&lt;br /&gt;
    ## update.message.reply_text(update.message.text)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def error(bot, update, error):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Log Errors caused by Updates.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    logger.warning('Update &amp;quot;%s&amp;quot; caused error &amp;quot;%s&amp;quot;', update, error)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Start the bot.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # Create the EventHandler and pass it your bot's token.&lt;br /&gt;
    updater = Updater(&amp;quot;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    # Get the dispatcher to register handlers&lt;br /&gt;
    dp = updater.dispatcher&lt;br /&gt;
&lt;br /&gt;
    # on different commands - answer in Telegram&lt;br /&gt;
    dp.add_handler(CommandHandler(&amp;quot;start&amp;quot;, start))&lt;br /&gt;
    dp.add_handler(CommandHandler(&amp;quot;help&amp;quot;, help))&lt;br /&gt;
    dp.add_handler(CommandHandler(&amp;quot;vote&amp;quot;, vote))&lt;br /&gt;
    dp.add_handler(CommandHandler(&amp;quot;count&amp;quot;, count))&lt;br /&gt;
&lt;br /&gt;
   # on noncommand i.e message - echo the message on Telegram&lt;br /&gt;
    dp.add_handler(MessageHandler(Filters.text, echo))&lt;br /&gt;
&lt;br /&gt;
    # log all errors&lt;br /&gt;
    dp.add_error_handler(error)&lt;br /&gt;
&lt;br /&gt;
    # Start the Bot&lt;br /&gt;
    updater.start_polling()&lt;br /&gt;
&lt;br /&gt;
    # Run the bot until you press Ctrl-C or the process receives SIGINT,&lt;br /&gt;
    # SIGTERM or SIGABRT. This should be used most of the time, since&lt;br /&gt;
    # start_polling() is non-blocking and will stop the bot gracefully.&lt;br /&gt;
    updater.idle()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Renzo</name></author>
	</entry>
</feed>