Skip to content

Instantly share code, notes, and snippets.

@bvanrijn

bvanrijn/bot.py Secret

Created August 16, 2016 10:07
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bvanrijn/2f2963c7d61d3d17ec548f977bed3baa to your computer and use it in GitHub Desktop.
Save bvanrijn/2f2963c7d61d3d17ec548f977bed3baa to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
"""
Copyright: (C) 2016, Barend van Rijn
License: MIT (see https://mitlicense.org)
"""
# Import dependencies
from telegram.ext import Updater
import logging
import Algorithmia
from telegram.ext import CommandHandler
from telegram.ext import MessageHandler, Filters
# Set up basic logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
# This is the token for the Telegram Bot API.
# See https://core.telegram.org/bots#3-how-do-i-create-a-bot
# and https://core.telegram.org/bots#6-botfather
updater = Updater(token='<token>')
dispatcher = updater.dispatcher
# You can find your Algorithmia token by going to My Profile > Credentials
client = Algorithmia.client('<token>')
# The algorithm we'll be using
algo = client.algo('nlp/Summarizer/0.1.3')
def start(bot, update):
# Your bot will send this message when users first talk to it, or when they use the /start command
bot.sendMessage(chat_id=update.message.chat_id, text="Hi. Send me any English text and I'll summarize it for you.")
def summarize(bot, update):
try:
# Get the text the user sent
text = update.message.text
# Run it through the summarizer
summary = algo.pipe(text)
# Send back the result
bot.sendMessage(chat_id=update.message.chat_id, text=summary.result)
except UnicodeEncodeError:
bot.sendMessage(chat_id=update.message.chat_id, text="Sorry, but I can't summarise your text.")
# This enables the '/start' command
start_handler = CommandHandler('start', start)
# Summarize all the messages sent to the bot, but only if they contain text
summarize_handler = MessageHandler([Filters.text], summarize)
dispatcher.add_handler(summarize_handler)
dispatcher.add_handler(start_handler)
updater.start_polling()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment