Skip to content

Instantly share code, notes, and snippets.

@kanazux
Last active June 7, 2017 15:45
Show Gist options
  • Save kanazux/3e08764f993aa26ac163b333c5e502ac to your computer and use it in GitHub Desktop.
Save kanazux/3e08764f993aa26ac163b333c5e502ac to your computer and use it in GitHub Desktop.
Bot em python para o jogo Summoners War
#!/usr/local/bin/python2.7
# -*- coding: UTF-8 -*-
#
# Author: kanazuchi <[email protected]>
#
# Bot para listar os mobs do Summoners War
# Pra gente como eu não ficar boiando quando alguém falar o nome
# do mob despertado e não saber de quem estão falando :3
# Ele herdou uma função /tempo de outro bot pra mostrar a previsão
# de tempo pra cidade escolhida :)
#
import re
import telegram
import datetime
import requests
import subprocess
import Algorithmia
from urllib2 import urlopen
from bs4 import BeautifulSoup as bs
from telegram.ext import Updater
from telegram.ext import CommandHandler
from telegram.ext import MessageHandler, Filters
ntoken = open('token', 'r').read().split('\n')[0]
bot = telegram.Bot(token=ntoken)
updater = Updater(token=ntoken)
dispatcher = updater.dispatcher
b = bs(requests.get(
'https://forum.com2us.com/forum/main-forum/summoner-s-war/events-ab').text, "html.parser")
get_monsters = bs(requests.get(
'http://summonerswar.wikia.com/wiki/User_blog:M%CD%A2ystr%CD%A2ile/Monster_data').text, "html.parser")
message = "\n".join([
x.text for x in b.findAll("a") if 'class' in x.attrs
if " ".join(x.attrs['class']) == "topic-title js-topic-title"])
mes = {1: 'Janeiro', 2: 'Fevereiro', 3: 'Marco', 4: 'Abril', 5: 'Maio', 6: 'Junho', 7: 'Julho', 8: 'Agosto',
9: 'Setembro', 10: 'Outubro', 11: 'Novembro', 12: 'Dezembro'}
client = Algorithmia.client('simqxANwUdKOUmXHyr6YR6EbxMK1')
algo = client.algo('nlp/Summarizer/0.1.3')
def linda(bot, update):
bot.sendMessage(
chat_id=update.message.chat_id, text="Não era nem pruuuh cê ta aqui linda! *insira um meme de pombo aqui*")
def start(bot, update):
bot.sendMessage(
chat_id=update.message.chat_id, text="HI, talk DIRT to me, pa ra ra, pa, rararra, parara, para rarara")
def event(bot, update):
bot.sendMessage(chat_id=update.message.chat_id, text=message)
def nat5(bot, update):
bot.sendMessage(chat_id=update.message.chat_id, text="Objeto desconhecido...")
def frr(bot, update):
dia = datetime.datetime.today()
if dia.day <= 6 and dia.weekday() <= 5:
m = datetime.datetime.today().month
else:
m = datetime.datetime.today().month + 1
d = 1
while True:
if datetime.datetime(2017, m, d).weekday() == 5:
frr_date = datetime.datetime(2017, m, d)
break
else:
d = d + 1
mess = "Dia {} de {}".format(frr_date.day, mes[frr_date.month])
bot.sendMessage(chat_id=update.message.chat_id, text=mess)
def monstrinho(bot, update):
n_monstro = update.message['text'].split()[1]
monstrinhos = [x.text for x in get_monsters.findAll('a') if 'class' in x.attrs
if 'mw-redirect' in x.attrs['class']
if re.match(r"{}".format(n_monstro.lower()), x.text, re.IGNORECASE)]
mess = "Os The Monios\n"
if len(monstrinhos) == 1:
for x in monstrinhos:
mess += "http://summonerswar.wikia.com/wiki/{}\n".format(x)
parsedown = "HTML"
elif len(monstrinhos) > 1:
for x in monstrinhos:
mess += "{}\n".format(x)
mess = "```"+mess+"```"
parsedown = "Markdown"
else:
mess = "Achei monstrin com esse nome nao..."
parsedown = "HTML"
bot.sendMessage(chat_id=update.message.chat_id, text=mess, parse_mode=parsedown)
def inquery(bot, update):
bot.sendMessage(chat_id=update.message.from_user.id, text=update.message, parse_mode="HTML")
def tempo(bot, update):
cidade = " ".join(update.message['text'].split()[1:])
wttr = subprocess.check_output(['curl -s wttr.in/{}'.format(cidade)], shell=True)[:350]
pattern1 = re.compile(r'\x1b\[[0-9]m', re.I)
pattern2 = re.compile(r'\x1b\[[0-9]+;[0-9]+m', re.I)
pattern3 = re.compile(r'\x1b\[[0-9]+;[0-9]+;[0-9]+m', re.I)
pattern4 = re.compile(r'\x1b\[[0-9]+;[0-9]+;[0-9]+;[0-9]+m', re.I)
if wttr == "ERROR":
mess = "Essa cidade ai num tem nao bichin!"
else:
wttr = pattern4.subn('', wttr)[0]
wttr = pattern3.subn('', wttr)[0]
wttr = pattern2.subn('', wttr)[0]
wttr = pattern1.subn('', wttr)[0]
mess = "```"+wttr+"```"
bot.sendMessage(chat_id=update.message.from_user.id, text=mess, parse_mode="Markdown")
def summario(bot, update):
text = update.message['text']
summary = algo.pipe(text)
user = [x for x in text.split() if "@" in x]
print user
if len(user) != 0:
bot.sendMessage(chat_id="{}".format(user), text=summary.result, parse_mode="Markdown")
event_handler = CommandHandler('event', event)
start_handler = CommandHandler('start', start)
nat5_handler = CommandHandler('nat5', nat5)
frr_handler = CommandHandler('frr', frr)
linda_handler = CommandHandler('linda', linda)
monstrinho_handler = CommandHandler('monstrinho', monstrinho)
inquery_handler = CommandHandler('inquery', inquery)
tempo_handler = CommandHandler('tempo', tempo)
summario_handler = MessageHandler(Filters.text, summario)
dispatcher.add_handler(summario_handler)
dispatcher.add_handler(tempo_handler)
dispatcher.add_handler(inquery_handler)
dispatcher.add_handler(monstrinho_handler)
dispatcher.add_handler(linda_handler)
dispatcher.add_handler(frr_handler)
dispatcher.add_handler(nat5_handler)
dispatcher.add_handler(event_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