def poly(bot, ievent): try: grammar = "%s/%s.grm" % (path, ievent.args[0]) except IndexError: grammar = None if not grammar: try: avail_grammars = glob("%s/*.grm" % path) grammar = random.choice(avail_grammars) except IndexError: bot.msg(choose_dest(ievent), "%s: nessuna grammatica disponibile! polygen-data è installato?" % ievent.nick) return if not os.path.exists(grammar): bot.msg(choose_dest(ievent), "%s: non ho la grammatica %s!" % (ievent.nick, ievent.args[0])) return try: p = Popen(["polygen", grammar], stdout=PIPE) reply = " ".join(filter(lambda x: x, p.communicate())).replace("\n", " ").strip() text = strip_tags(reply) if ievent.channel not in ['#pollo']: if ievent.args[0] not in ['melissap', 'teen', 'teen2', 'studioaperto']: text = trunc(text) bot.msg(choose_dest(ievent), "%s: %s" % (ievent.nick, text)) except: bot.msg(choose_dest(ievent), "%s: non posso dirti nulla di nuovo, c'è stato un errore..." % ievent.nick) raise return
def polylist(bot, ievent): try: grammars = glob("%s/*.grm" % path) tmp = [] for g in grammars: tmp.append(os.path.basename(g).replace(".grm", "")) grammars = sorted(tmp) except IndexError: bot.msg(choose_dest(ievent), "%s: nessuna grammatica disponibile! polygen-data è installato?" % ievent.nick) return bot.msg(choose_dest(ievent), "%s: conosco queste grammatiche: %s" % (ievent.nick, " ".join(grammars)))
def quotedel(bot, ievent): '''quote-del <id>''' bot.sendLine('WHO %s' % ievent.channel) modes = bot.userlist[ievent.channel.lower()][ievent.nick] if '~' in modes or \ '&' in modes or \ '@' in modes or \ ievent.nick == 'dapal': id = int(ievent.args[0]) if quotes.delete(id): bot.msg(choose_dest(ievent), '%s: quote \x02%s\x0F cancellato.' % (ievent.nick, id)) else: bot.msg(choose_dest(ievent), '%s: impossibile cancellare il quote %s.' % (ievent.nick, id))
def ordini(bot, ievent): from pprint import pprint ordine = orders.get_last(ievent.channel.lower())[0] #pprint(ordine) if not ordine: bot.msg(choose_dest(ievent), '\x02Nessun ordine attivo.\x0F') else: # ordine = [(1, u'#ei-tech', u'Pvppa.', u'dapal', u'2014-04-14 22:44:40.767942')] _, _, message, issuer, when = ordine issuer = issuer[:-1] + '|' + issuer[-1] # so that it doesn't ping the user message = '\x02%s\x0F (set by %s at %s)' % (message, issuer, when) bot.msg(choose_dest(ievent), message.encode('utf-8')) return
def perladel(bot, ievent): '''perla-del <id>''' bot.sendLine('WHO %s' % ievent.channel) modes = bot.userlist[ievent.channel.lower()][ievent.nick] if '~' in modes or \ '&' in modes or \ '@' in modes or \ ievent.nick == 'dapal': id = int(ievent.args[0]) if perle.delete(id): bot.msg(choose_dest(ievent), '%s: perla \x02%s\x0F cancellata.' % (ievent.nick, id)) else: bot.msg(choose_dest(ievent), '%s: impossibile cancellare la perla %s.' % (ievent.nick, id))
def reg_nick(bot, ievent): '''.reg_nick <id> [nickname]''' uid = ievent.args[0] if len(ievent.args) == 1: user = ievent.nick else: user = ievent.args[1] print uid, user ret = users.search(user) if ret: bot.msg(choose_dest(ievent), '%s: utente già esistente.' % ievent.nick) else: users.add(user, uid) bot.msg(choose_dest(ievent), '%s: utente aggiunto.' % ievent.nick)
def perla(bot, ievent): '''perla [numero perla]''' if len(ievent.args) == 0: perla = perle.random() else: try: perla = perle.idperla(int(ievent.args[0])) except exceptions.ValueError: perla = perle.random() if perla: bot.msg(choose_dest(ievent), '%s: %s' % (ievent.nick, perla.encode('utf-8'))) else: bot.msg(choose_dest(ievent), '%s: non esiste quella perla di saggezza!' % ievent.nick)
def lartdel(bot, ievent): """lart-del <id del lart>""" bot.sendLine('WHO %s' % ievent.channel) modes = bot.userlist[ievent.channel.lower()][ievent.nick] if '~' in modes or \ '&' in modes or \ '@' in modes or \ ievent.nick == 'dapal': id = int(ievent.args[0]) if larts.delete(id): bot.msg(choose_dest(ievent), "%s: lart %s cancellato." % (ievent.nick, id)) else: bot.msg(choose_dest(ievent), "%s: impossibile cancellare lart %s." % (ievent.nick, id)) return
def quote(bot, ievent): '''quote [numero quote]''' if len(ievent.args) == 0: quote = quotes.random() else: try: quote = quotes.idquote(int(ievent.args[0])) except exceptions.ValueError: quote = quotes.random() if quote: bot.msg(choose_dest(ievent), quote.encode('utf-8')) else: bot.msg(choose_dest(ievent), '%s: non ho un quote \x02%d\x0F.' % (ievent.nick, int(ievent.args[0])))
def lartllow(bot, ievent): """lartallow <utente>""" bot.sendLine('WHO %s' % ievent.channel) modes = bot.userlist[ievent.channel.lower()][ievent.nick] if '~' in modes or \ '&' in modes or \ '@' in modes or \ '%' in modes or \ ievent.nick == 'dapal': if len(ievent.args): ignores.delete(ievent.args[0], ievent.nick) bot.msg(choose_dest(ievent), '%s: cot' % ievent.nick) else: bot.msg(choose_dest(ievent), '%s: PVPPA' % ievent.nick) return
def quotesearch(bot, ievent): '''quote-search <query>''' args = ievent.msg.split(' ', 1) query = args[1] for id, quote, createtime, user in quotes.search(query): bot.msg(choose_dest(ievent), '\x02#%s\x0F: %s' % (id, quote.encode('utf-8'))) time.sleep(0.75)
def perlasearch(bot, ievent): '''perla-search <query>''' args = ievent.msg.split(' ', 1) query = args[1] for id, perla in perle.search(query): bot.msg(choose_dest(ievent), '\x02#%s\x0F: %s' % (id, perla.encode('utf-8'))) time.sleep(0.75)
def rankup(bot, ievent): if len(ievent.args) == 0: user = ievent.nick else: user = '******'.join(ievent.args) user_id = get_uid(bot, ievent, user) if not user_id: return profile = scrape('citizen.profile', citizenId=user_id) next_rank_inf = 0 for inf in sorted(rankings.keys()): if inf >= int(profile['militaryAttributes']['rank_points']): next_rank_inf = inf break next_rank = rankings[next_rank_inf] req_inf = (next_rank_inf - int(profile['militaryAttributes']['rank_points'])) * 10 elite = int(profile['general']['level']) >= 101 hit = get_hit(profile['militaryAttributes']['strength'], profile['militaryAttributes']['rank_points'], elite) hit_q0 = int(req_inf / hit) msg = 'Prossimo rank per %s: \x02%s\x0F :: Inf richiesta: %d :: Q0: \x02%s\x0F :: Q1: \x02%s\x0F :: Q2: \x02%s\x0F :: Q3: \x02%s\x0F :: Q4: \x02%s\x0F :: Q5: \x02%s\x0F :: Q6: \x02%s\x0F :: Q7: \x02%s\x0F' % \ (profile['general']['name'], next_rank, req_inf, hit_q0, int(hit_q0 / 1.2), int(hit_q0 / 1.4), int(hit_q0 / 1.6), int(hit_q0 / 1.8), int(hit_q0 / 2), int(hit_q0 / 2.2), int(hit_q0 / 3)) bot.msg(choose_dest(ievent), msg)
def erre(bot, ievent): sentences = [ 'vola, x3rr3x, vola!', 'x3rr3x sei carico stasera?', ] msg = randomize_msg(sentences) if msg: bot.msg(choose_dest(ievent), msg)
def reclute_link(bot, ievent, link): if limited_message(bot, ievent): if len(ievent.args): nick = ievent.args[0] else: nick = ievent.nick bot.msg(choose_dest(ievent), '%s: %s' % (nick, link)) return
def link_profile(bot, ievent): if len(ievent.args) == 0: user = ievent.nick else: user = '******'.join(ievent.args) user_id = get_uid(bot, ievent, user) if not user_id: return bot.msg(choose_dest(ievent), '%s: http://www.erepublik.com/en/citizen/profile/%s' % (ievent.nick, user_id))
def lartsearch(bot, ievent): """lart-search <query>""" args = ievent.msg.split(" ", 1) if len(args) == 1: bot.msg(choose_dest(ievent), "%s: cosa devo cercare?" % ievent.nick) return query = args[1] if len(query) < 3: bot.msg(choose_dest(ievent), '%s: il termine di ricerca deve contenere almeno 3 caratteri.' % ievent.nick) return if query.strip() in ['$who', 'who']: bot.msg(choose_dest(ievent), '%s: volevi fare il furbo, eh?' % ievent.nick) return for id, lart in larts.search(query): bot.msg(choose_dest(ievent), "#%s: %s" % (id, lart.encode("utf-8"))) time.sleep(0.75) return
def linxys(bot, ievent): sentences = [ 'Linxys :***', 'Linxys ti difendo io!', 'hey, Linxys! Non tradirmi! :(', ] msg = randomize_msg(sentences) if msg: bot.msg(choose_dest(ievent), msg)
def egov_profile(bot, ievent): if len(ievent.args) == 0: user = ievent.nick else: user = '******'.join(ievent.args) user_id = get_uid(bot, ievent, user) if not user_id: return bot.msg(choose_dest(ievent), '%s: http://egov4you.info/citizen/overview/%s' % (ievent.nick, user_id))
def message(bot, ievent): if len(ievent.args) == 0: user = ievent.nick else: user = '******'.join(ievent.args) user_id = get_uid(bot, ievent, user) if not user_id: return bot.msg(choose_dest(ievent), '%s: http://www.erepublik.com/en/main/messages-compose/%s' % (ievent.nick, user_id))
def money(bot, ievent): if len(ievent.args) == 0: user = ievent.nick else: user = '******'.join(ievent.args) user_id = get_uid(bot, ievent, user) if not user_id: return bot.msg(choose_dest(ievent), '%s: http://www.erepublik.com/en/economy/donate-money/%s' % (ievent.nick, user_id))
def ei_profilo(bot, ievent): if len(ievent.args) == 0: user = ievent.nick else: user = '******'.join(ievent.args) user_id = get_uid(bot, ievent, user) if not user_id: return bot.msg(choose_dest(ievent), '%s: http://ei-manage.hanskalabs.net/users/view/%s' % (ievent.nick, user_id))
def awedxz(bot, ievent): sentences = [ 'son tuti terùn chi, eh awedxz?', 'hey awedxz, hai sentito della storia tra Turid e x3rr3x?', "awedxz smettila di fappare, c'è gente che ti chiama!", 'non pingarlo, tanto awedxz se ne catafotte.', ] msg = randomize_msg(sentences) if msg: bot.msg(choose_dest(ievent), msg)
def get_uid(bot, ievent, user): ret = users.search(user) if ret: return int(ret[0][2]) try: uid = scrape('uid', query=user) users.add(user, uid) return uid except IndexError: bot.msg(choose_dest(ievent), '%s: utente «%s» non trovato.' % (ievent.nick, user)) return None
def avatar(bot, ievent): if len(ievent.args) == 0: user = ievent.nick else: user = '******'.join(ievent.args) user_id = get_uid(bot, ievent, user) if not user_id: return profile = scrape('citizen.profile', citizenId=user_id) avatar = profile['general']['avatar'].replace('\\/', '/') bot.msg(choose_dest(ievent), '%s: %s' % (ievent.nick, avatar))
def quoteadd(bot, ievent): '''quote-add <testo>''' bot.sendLine('WHO %s' % ievent.channel) modes = bot.userlist[ievent.channel.lower()][ievent.nick] if '~' in modes or \ '&' in modes or \ '@' in modes or \ ievent.nick == 'dapal': args = ievent.msg.split(' ', 1) id = quotes.add(args[1]) bot.msg(choose_dest(ievent), '%s: quote \x02%s\x0F aggiunto.' % (ievent.nick, id))
def lartadd(bot, ievent): """lart-add <testo contenente $who>""" args = ievent.msg.split(" ", 1) bot.sendLine('WHO %s' % ievent.channel) modes = bot.userlist[ievent.channel.lower()][ievent.nick] if '~' in modes or \ '&' in modes or \ '@' in modes or \ ievent.nick == 'dapal': id = larts.add(args[1]) bot.msg(choose_dest(ievent), "%s: lart %s aggiunto." % (ievent.nick, id)) return
def bug(bot, ievent): """bug <bugid>""" bts = debbugs() b = bts.get(int(ievent.args[0])) status = "(fixed) " if b.status == "done" else "" severity = "(%s) " % b.severity if b.severity != "normal" else "" #msg = colourise("[bug]#%s[reset]%s: %s: «[title]%s[reset]»%s [url]%s[reset]" % (b.bug, status, package, b.summary, severity, b.url)).decode("utf-8") #msg = "#%s%s: %s: %s%s %s" % (b.bug, status, b.package, b.summary, severity, b.url) msg = "%s %s%s- %s: %s" % (b.url, status, severity, b.package, b.summary) bot.msg(choose_dest(ievent), "%s: %s" % (ievent.nick, msg.encode("utf-8")))
def list_profile(bot, ievent): if len(ievent.args) == 0: user = ievent.nick else: user = '******'.join(ievent.args) user_id = get_uid(bot, ievent, user) if not user_id: return profile = scrape('citizen.profile', citizenId=user_id) age = datetime.now() - datetime.strptime(profile['general']['birthDay'], '%b %d, %Y') if not profile['party']['name']: profile['party']['name'] = 'Nessun partito' if not profile['militaryUnit']: profile['militaryUnit']['name'] = 'Nessuna MU' # fix for missing Titan(***) in the API rank_inf = 0 for inf in sorted(rankings.keys()): if inf <= int(profile['militaryAttributes']['rank_points']): rank_inf = inf rank = rankings[rank_inf] bot.msg( choose_dest(ievent), '\x02ID:\x0F %s ' \ '\x02Lvl:\x0F %s ' \ '\x02Age:\x0F %s ' \ '\x02XP:\x0F %s ' \ '\x02Strength:\x0F %s ' \ '\x02Rank:\x0F %s ' \ '\x02Rank Points:\x0F %s ' \ '\x02Ranking:\x0F %s ' \ '\x02CZ:\x0F %s ' \ '\x02Residence:\x0F %s, %s ' \ '\x02Party:\x0F %s ' \ '\x02MU:\x0F %s' % ( user_id, profile['general']['level'], age.days, profile['general']['experience_points'], profile['militaryAttributes']['strength'], rank, profile['militaryAttributes']['rank_points'], profile['general']['nationalRank'], profile['location']['citizenship_country_initials'], profile['location']['residence_country_name'], profile['location']['residence_region_name'], profile['party']['name'], profile['militaryUnit']['name'] ) )
def turid(bot, ievent): sentences = [ 'che ha combinato Turid stavolta?!', 'ma Turid ha bevuto?', 'in alto i calici per Turid!', 'evviva Turid!!!', 'fate reclutare gente a Turid!', 'Turid mi fa i dispetti :(', 'Turid: ILLIMITATAMENTEEEEEEE', ] msg = randomize_msg(sentences) if msg: bot.msg(choose_dest(ievent), msg)