Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
telegram markov chain bot
#!/usr/bin/python2
# coding: utf-8
from subprocess import Popen, PIPE, STDOUT
from functools import partial
import re, datetime, random, time
from glob import glob
CHAIN_LENGTH=2
END = '\0'
ansi_escape = re.compile(r'\x1b[^m]+m')
data = {}
molejo = """Acorda criancada ta na hora da gente brincar (oba)
Brincar de pique-esconde,pique-cola e de pique-ta, ta, ta, ta
Nessa brincadeira tambam tem pique-bandeira e amarelinha pra quem gosta de pular
E aquela brincadeira de beijar.
Eh essa ? nao,
Eh essa ? eh
Pera, uva, maca ou salada mista ?
Salada mista (beija beija)
Brincadeira de crianca
Como e bom, como e bom
Guardo ainda na lembranca
Paz, amor e esperanca
Diga aonde voce vai
Que eu vou varrendo
Vou varrendo, vou varrendo, vou varrendo, vou varrendo
Oh menininha eu sou seu fan
Danco contigo ate de manha
Na danca da bruxinha
Danca preta, danca loura
Agora todo mundo
Na dancinha da vassoura
Varre pra esquerda
Varre pra direita
Levanta poeira
Que essa danca eh porreta...
Piti pi piti pi piti pau!
Mas tome cuidado
Com o cabo da vassoura
Eh pior do que cenoura
Voce pode se dar mal..."""
funk = """é o pet é o pet
Na madruga boladona sentada na esquina
se ela dança eu danço
pra dançar créu tem que ter disposição
pra dançar créu tem que ter habilidade
traição é traição, romance é romance, amor é amor e um lance é um lance
vem tchuchuca linda senta aqui com seu pretinho
Agora eu tô solteira e ninguém vai me segurar
Vem que vem que vem kicando
bota o dedinho na boca e faz cara de tarada
foge foge mulher maravilha foge com o super man
Eu vou pro baile procurar o meu negão
ela balança mas não pára
pra te enlouquecer todas que provaram não conseguem esquecer
Mas não se esqueça que eu sou vagabundo depois que a putaria começou rolar no mundo
Sou foda, Eu sou sinistro
Eu sou sinistro melhor que seu marido esculacho seu amigo no escuro eu sou um perigo
Faz quadradinho de 4
Papai jogo mel , e mamãe deu carinho , essa mulher , e pedaço de mal caminho
Ela desce ela kika , ela sobe ela empina
Olha os amigos lá em cima , jogando dinheiro do camarote
Bate o pé , treme a bunda e faz meu bonde passar mal
Ostentação fora do normal , quem tem moto faz amor e quem não tem passa mal
Garoto sem limite, se amarra em Red Bull com Whisky
Ela só pensa em beijar, beijar, beijar, beijar
Glamurosaaaaaa
Pre-pa-ra
To com o cu pegando fogo!
Beijinho no ombro pro recalque passar longe!"""
def split(msg):
m = msg.split()
m.append(END)
for i in range(len(m) - CHAIN_LENGTH):
yield m[i:i + CHAIN_LENGTH + 1]
def process(m):
m = m.lower()
m.replace("(", "")
m.replace(")", "")
m.replace("[", "")
m.replace("]", "")
for y in re.split("[.!?;\n]", m):
for x in split(y):
key = tuple(z.replace(",", "") for z in x[:2])
value = x[2]
data[key] = data.get(key, []) + [value]
def say(m):
m = m.replace(",", "")
x = m.split()
f = END
for i,w in enumerate(x[:-1]):
print data.get((w, x[i+1]), [END])
f = random.choice(data.get((w, x[i+1]), [END]))
if f != END:
break
if f == END:
return m
return x[i] + " " + say("%s %s" % (x[i+1], f))
try:
for line in open("input.txt"):
process(line)
except IOError:
pass
process(funk)
process(molejo)
p = Popen(['telegram'], stdin=PIPE, stdout=PIPE, stderr=STDOUT)
p.stdout.read(255) # read first bytes...
print "started"
line = ""
title = "voltei"
bomdia = """DYA!
Bundinha!!
Bom dia :D
Dia !!! :)"""
def chance(perc):
return random.randint(0, 99) > (100 - perc)
def wrt(m):
p.stdin.write("msg " + title.replace(" ", "_") + " " + m + "\n")
def img(i):
p.stdin.write("send_photo " + title.replace(" ", "_") + " " + i + "\n")
reading_msg = False
while True:
if line:
if ansi_escape.sub("", line)[0].startswith("[") or line.startswith(">"):
reading_msg = False
if "changed title" in line:
reading_msg = False
title = line.split("changed title to ")[-1].strip()
title = ansi_escape.sub("", title)
elif line.startswith("Chat "):
reading_msg = False
title = ":".join(line.split("Chat ")[1].split(":")[:-1])
title = ansi_escape.sub("", title)
#img("disco.png")
elif title in line and ">>>" in line or reading_msg:
reading_msg = True
msg = line.split(">>> ")[-1]
if title in line:
user = ansi_escape.sub("", line.split(">>> ")[0].split(title)[-1].strip())
else:
user = 'noone'
if "robo " in user.lower():
pass
else:
if msg.lower().startswith("qotd"):
wrt("%s" % (Popen(["fortune"], stdout=PIPE).stdout.read().replace("\n", " ")))
elif msg.lower().startswith("hora certa do pupi") or msg.lower().startswith("pupi ta chegando?"):
wrt(random.choice(["atrasado ...", "chegando..", "quase la..", "hm...", "que horas sao?"]))
elif msg.startswith("hora certa"):
wrt(datetime.datetime.now().strftime("%H:%M:%S"))
elif "molejao" in msg.lower() and chance(70):
wrt("%s" % random.choice(molejo.split("\n")))
elif "funk" in msg.lower():
wrt("%s" % random.choice(funk.split("\n")))
elif "piroca" in msg.lower():
wrt("8%sD" % ("="*random.randint(1,40)))
elif "xxt" in msg.lower() or "xoxota" in msg.lower():
img(random.choice(glob("pussy*.jpg")))
elif msg.lower().startswith("dia ") or msg.lower().startswith("dia!") or msg.lower().startswith("dya") or "bom dia" in msg.lower() or "bom dya" in msg.lower() or "dia!" in msg.lower():
wrt("%s" % (random.choice(bomdia.split("\n"))))
elif "perd" in msg.lower():
wrt("queria dizer que: PERDI!!%s" % ("!" * random.randint(0,20)))
else:
ss = say(msg.lower())
if ss.strip()[:-1] in msg.lower().strip().replace(",", ""):
print "SAME:", ss
pass #img(random.choice(glob("*.jpg") + glob("*.png")))
else:
wrt(ss)
mm = msg.lower().strip().replace("\x1b[0m", "")
process(mm)
f = open("input.txt", 'a')
f.writelines([mm + "\n"])
f.close()
time.sleep(0.5)
line_old = line
line = p.stdout.readline()
if line == line_old:
line = ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.