def writeout(self): # Write to socket/server while True: try: (priority, sent, line) = self.output.get(True, 1) except Empty: if self.quitting: break else: continue try: while self.last + Config.getfloat("Connection", "antiflood") * (1 + (len(line) > 300) + (priority > 10)) >= time.time(): time.sleep(0.5) # Warn admins if the wait is too long if time.time() > sent + Config.getint("Connection", "maxdelay"): if time.time() > self.wait_warned + 300: self.wait_warned = time.time() adminmsg("Message output message delay is too long: %.1f seconds" % (time.time() - sent)) self.sock.send(encode(line) + CRLF) self.last = time.time() print "%s >>> %s" % (time.asctime(),encode(line),) self.output.task_done() if line[:4].upper() == "QUIT": break except socket.error as exc: raise Reboot(exc)
def parse(self, line): # Parse the irc line self.line = line self._nick = line.split("!")[0][1:] self._hostmask = line.split()[0][1:] self._command = line.split()[1] self._channel = "" # Channel try: chan = ":"+line.split(":")[1] # The ":" is added after the split etc, just to make the .find()s return the right result hash = max(chan.find("#"),0) or len(line) amp = max(chan.find("&"),0) or len(line) if not hash == amp: # There's no # or &, ie both lines returned len(line) self._channel = line[min(hash,amp):].split()[0] else: # This should almost certainly give the bot's nick self._channel = line.split()[2] except IndexError: self._chanerror = True # Encoding self._nick = encode(self._nick) self._hostmask = encode(self._hostmask) self._command = encode(self._command) self._channel = encode(self._channel) # Message try: self._msg = line[line.index(":",1)+1:] except ValueError: self._msgerror = True
def parse(self, line): # Parse the irc line self.line = line self._nick = line.split("!")[0][1:] self._hostmask = line.split()[0][1:] self._command = line.split()[1] self._channel = "" # Channel try: chan = ":" + line.split( ":" )[1] # The ":" is added after the split etc, just to make the .find()s return the right result hash = max(chan.find("#"), 0) or len(line) amp = max(chan.find("&"), 0) or len(line) if not hash == amp: # There's no # or &, ie both lines returned len(line) self._channel = line[min(hash, amp):].split()[0] else: # This should almost certainly give the bot's nick self._channel = line.split()[2] except IndexError: self._chanerror = True # Encoding self._nick = encode(self._nick) self._hostmask = encode(self._hostmask) self._command = encode(self._command) self._channel = encode(self._channel) # Message try: self._msg = line[line.index(":", 1) + 1:] except ValueError: self._msgerror = True
def writeout(self): # Write to socket/server while True: try: (priority, sent, line) = self.output.get(True, 1) except Empty: if self.quitting: break else: continue try: while self.last + Config.getfloat( "Connection", "antiflood") * (1 + (len(line) > 300) + (priority > 10)) >= time.time(): time.sleep(0.5) # Warn admins if the wait is too long if priority < 10 and time.time() > sent + Config.getint( "Connection", "maxdelay"): if time.time() > self.wait_warned + 300: self.wait_warned = time.time() admin_msg( "Message output message delay is too long: %.1f seconds" % (time.time() - sent)) self.sock.send(encode(line) + CRLF) self.last = time.time() print "%s >> %s" % ( time.strftime("%Y%m%d %H:%M:%S |"), encode(line), ) self.output.task_done() if line[:4].upper() == "QUIT": break except socket.error as exc: raise Reboot(exc)
def write(self, line): # Write to socket/server try: ponging = self.pong.match(line) if ponging: self.sock.send(line + CRLF) else: while self.last + 1 >= time.time(): time.sleep(0.5) self.sock.send(encode(line) + CRLF) self.last = time.time() print "%s >>> %s" % (time.asctime(),encode(line),) except socket.error as exc: raise Reboot(exc)
def execute(self, message, user, params): rec = params.group(1) shortmsg = params.group(2) is not None public_text = params.group(3) + (' - %s' % (user.name, ) if not shortmsg else '') text = encode(public_text) receiver = User.load(name=rec, exact=False, access="member") or User.load(name=rec) if not receiver: message.reply("Who exactly is %s?" % (rec, )) return email = receiver.email if not email: message.reply( "That incompetent retard %s hasn't provided an address. Super secret message not sent." % (receiver.name, )) return error = "" error = self.send_email(user, receiver, public_text, email, text, shortmsg) if error is None: message.reply("Successfully processed To: %s Message: %s" % (receiver.name, decode(text))) else: message.reply( error or "That wasn't supposed to happen. I don't really know what went wrong. Maybe your mother dropped you." )
def __str__(self): ret = "" if self.nick: ret += " nick=%s" % (self.nick,) if self.alliance is not None: ret += " alliance=%s" % (self.alliance.name,) if self.fakenick: ret += " fakenick=%s" % (self.fakenick,) if self.defwhore: ret += " defwhore=%s" % (self.defwhore,) if self.covop: ret += " covop=%s" % (self.covop,) if self.scanner: ret += " scanner=%s" % (self.scanner,) if self.dists: ret += " dists=%s" % (self.dists,) if self.bg: ret += " bg=%s" % (self.bg,) if self.gov: ret += " gov=%s" % (self.gov,) if self.relay: ret += " relay=%s" % (self.relay,) if self.reportchan: ret += " reportchan=%s" % (self.reportchan,) if self.comment: ret += " comment=%s" % (self.comment,) return encode(ret) return ret
def __str__(self): retstr = "'%s' Members: %s (%s) " % (self.name, self.members, self.members_rank) retstr += "Score: %s (%s) Avg: %s (%s) " % (self.score, self.score_rank, self.score_avg, self.score_avg_rank) retstr += "Points: %s (%s) " % (self.points, self.points_rank) retstr += "Size: %s (%s) Avg: %s (%s)" % (self.size, self.size_rank, self.size_avg, self.size_avg_rank) return encode(retstr) return retstr
def __str__(self): # String representation of the Message object (Namely for debugging purposes) try: return "[%s] <%s> %s" % (self.get_chan(), self.get_nick(), encode(self.get_msg())) return "[%s] <%s> %s" % (self.get_chan(), self.get_nick(), self.get_msg()) except ParseError: return ""
def execute(self, message, user, params): rec = params.group(1) shortmsg = params.group(2) is not None public_text = params.group(3) + (" - %s" % (user.name,) if not shortmsg else "") text = encode(public_text) receiver = User.load(name=rec, exact=False, access="member") or User.load(name=rec) if not receiver: message.reply("Who exactly is %s?" % (rec,)) return email = receiver.email if not email: message.reply( "That incompetent retard %s hasn't provided an address. Super secret message not sent." % (receiver.name,) ) return error = "" error = self.send_email(user, receiver, public_text, email, text, shortmsg) if error is None: message.reply("Successfully processed To: %s Message: %s" % (receiver.name, decode(text))) else: message.reply( error or "That wasn't supposed to happen. I don't really know what went wrong. Maybe your mother dropped you." )
def __str__(self): retstr = "%s:%s '%s' (%s) " % (self.x, self.y, self.name, self.planet_loader.filter_by(active=True).count()) retstr += "Score: %s (%s) " % (self.score, self.score_rank) retstr += "Value: %s (%s) " % (self.value, self.value_rank) retstr += "Size: %s (%s) " % (self.size, self.size_rank) retstr += "XP: %s (%s) " % (self.xp, self.xp_rank) return encode(retstr) return retstr
def write(self, line): # Write to socket/server try: ponging = self.pong.match(line) if ponging: self.sock.send(line + CRLF) else: while self.last + 1 >= time.time(): time.sleep(0.5) self.sock.send(encode(line) + CRLF) self.last = time.time() print "%s >>> %s" % ( time.asctime(), encode(line), ) except socket.error as exc: raise Reboot(exc)
def __str__(self): retstr = "%s:%s:%s (%s) '%s' of '%s' " % (self.x, self.y, self.z, self.race, self.rulername, self.planetname) retstr += "Score: %s (%s) " % (self.score, self.score_rank) retstr += "Value: %s (%s) " % (self.value, self.value_rank) retstr += "Size: %s (%s) " % (self.size, self.size_rank) retstr += "XP: %s (%s) " % (self.xp, self.xp_rank) retstr += "Idle: %s " % (self.idle,) return encode(retstr) return retstr
def disconnect(self, line): # Cleanly close sockets print "%s Disconnecting IRC... (%s)" % (time.asctime(),encode(line),) try: self.write("QUIT :%s" % (line,)) except Reboot: pass finally: self.close() return ()
def write(self, line): # Write to socket/server ponging = self.pong.match(line) if ponging: self.sock.send(line + CRLF) else: while self.last + 1 >= time.time(): time.sleep(0.5) self.sock.send(encode(line) + CRLF) self.last = time.time() print "%s >>> %s" % (time.asctime(), line)
def disconnect(self, line): # Cleanly close sockets print "%s Disconnecting IRC... (%s)" % (time.strftime("%Y%m%d %H:%M:%S |"),encode(line),) try: self.write("QUIT :%s" % (line,)) self.quitting = True self.thread.join() except Reboot: pass finally: self.close() return ()
def execute(self, message, user, params): rec = params.group(1) public_text = params.group(2) + ' - %s' % (user.name,) text = encode(public_text + '/%s' %(user.phone,)) receiver=User.load(name=rec,exact=False) if not receiver: message.reply("Who exactly is %s?" % (rec,)) return if receiver.name.lower() == 'zeb': message.reply("FOR EMERGENCY ONLY!!!! Zeb only has a land line so only rings will work. Use !phone show Zeb to get his phone number.") return if receiver.name.lower() == 'cormik': message.reply("Cormik has no mobile, but usually responds to emails. Use !whois Cormik to get his email address.") return if receiver.name.lower() == 'richards': message.reply("SMS does not work, richards is Deaf(no really, he can't hear).") return if not receiver.pubphone and user not in receiver.phonefriends: message.reply("%s's phone number is private or they have not chosen to share their number with you. Supersecret message not sent." % (receiver.name,)) return if receiver.smsmode == "Email": message.reply("Emailing not yet implemented") return phone = self.prepare_phone_number(receiver.phone) if not phone or len(phone) <= 7: message.reply("%s has no phone number or their phone number is too short to be valid (under 6 digits). Super secret message not sent." % (receiver.name,)) return if len(text) >= 160: message.reply("Max length for a text is 160 characters. Your text was %i characters long. Super secret message not sent." % (len(text),)) return mode = Config.get("Misc", "sms") mode = receiver.smsmode or mode if mode == "combined" else mode mode = mode.lower() error = "" if mode == "googlevoice" or mode == "combined": error = self.send_googlevoice(user, receiver, public_text, phone, text) sent = "Google Voice" if mode == "clickatell" or (mode == "combined" and error is not None): error = self.send_clickatell(user, receiver, public_text, phone, text) sent = "Clickatell" if error is None: message.reply("%s successfully processed message to: %s saying: %s" % (sent,receiver.name,decode(text))) else: message.reply(error or "That wasn't supposed to happen. I don't really know what went wrong. Maybe your mother dropped you.")
def parse(self, line): # Parse the irc line self.line = line self._nick = line.split("!")[0][1:] self._hostmask = line.split()[0][1:] self._command = line.split()[1] self._channel = "" # Channel try: chan = ":"+line.split(":")[1] # The ":" is added after the split etc, just to make the .find()s return the right result hash = max(chan.find("#"),0) or len(line) amp = max(chan.find("&"),0) or len(line) if not hash == amp: # There's no # or &, ie both lines returned len(line) self._channel = line[min(hash,amp):].split()[0] else: # This should almost certainly give the bot's nick self._channel = line.split()[2] except IndexError: self._chanerror = True # Encoding self._nick = encode(self._nick) self._hostmask = encode(self._hostmask) self._command = encode(self._command) self._channel = encode(self._channel) # Message try: if len(line.split(":")[1].split()) < 3: self._msg = line[line.index(":",1)+1:] else: self._msg = " ".join(line.split()[3:]) if self._msg and self._msg[0] == ":": self._msg = self._msg[1:] if (not self._msg or self._msg.strip() == "") and self._command != "PRIVMSG": # CUT needed this, but merlin gets *very* upset on an empty PRIVMSG. self._msgerror = True except ValueError: self._msgerror = True
def disconnect(self, line): # Cleanly close sockets print "%s Disconnecting IRC... (%s)" % ( time.asctime(), encode(line), ) try: self.write("QUIT :%s" % (line, )) except Reboot: pass finally: self.close() return ()
def parse(self, line): # Parse the irc line r = parse_raw_irc(line) self.line = line self._nick = r['source']['name'] self._hostmask = r['source']['full'] self._command = r['msg'] self._channel = r['params'][2] if r['msg'] == "353" else r['params'][0] if not self._channel: self._chanerror = True # Encoding self._nick = encode(self._nick) self._hostmask = encode(self._hostmask) self._command = encode(self._command) self._channel = encode(self._channel) # Message self._msg = r['params'][-1] if (not self._msg or self._msg.strip() == "") and self._command != "PRIVMSG": # CUT needed this, but merlin gets *very* upset on an empty PRIVMSG. self._msgerror = True
def execute(self, message, user, params): rec = params.group(1) public_text = params.group(2) + ' - %s' % (user.name,) text = encode(public_text + '/%s' %(user.phone,)) receiver=User.load(name=rec,exact=False,access="member") or User.load(name=rec) if not receiver: message.reply("Who exactly is %s?" % (rec,)) return if receiver.smsmode == "Retard": message.reply("I refuse to talk to that incompetent retard. Check %s's mydef comment and use !phone show to try sending it using your own phone." %(receiver.name,)) return if not receiver.pubphone and user not in receiver.phonefriends: message.reply("%s's phone number is private or they have not chosen to share their number with you. Supersecret message not sent." % (receiver.name,)) return if receiver.smsmode == "Email": mode = receiver.smsmode phone = receiver.email else: mode = Config.get("Misc", "sms") phone = self.prepare_phone_number(receiver.phone) if not phone or len(phone) <= 7: message.reply("%s has no phone number or their phone number is too short to be valid (under 6 digits). Super secret message not sent." % (receiver.name,)) return if len(text) >= 160: message.reply("Max length for a text is 160 characters. Your text was %i characters long. Super secret message not sent." % (len(text),)) return mode = receiver.smsmode or mode if mode == "combined" else mode mode = mode.lower() error = "" if mode == "email": error = self.send_email(user, receiver, public_text, phone, text) sent = "Email" if mode == "googlevoice" or mode == "combined": error = self.send_googlevoice(user, receiver, public_text, phone, text) sent = "Google Voice" if mode == "clickatell" or (mode == "combined" and error is not None): error = self.send_clickatell(user, receiver, public_text, phone, text) sent = "Clickatell" if error is None: message.reply("%s successfully processed message to: %s saying: %s" % (sent,receiver.name,decode(text))) else: message.reply(error or "That wasn't supposed to happen. I don't really know what went wrong. Maybe your mother dropped you.")
def disconnect(self, line): # Cleanly close sockets print "%s Disconnecting IRC... (%s)" % ( time.strftime("%Y%m%d %H:%M:%S |"), encode(line), ) try: self.write("QUIT :%s" % (line, )) self.quitting = True self.thread.join() except Reboot: pass finally: self.close() return ()
def execute(self, message, user, params): rec = params.group(1) public_text = params.group(2) + ' - %s' % (user.name,) text = encode(public_text + '/%s' %(user.phone,)) receiver=User.load(name=rec,exact=False) if not receiver: message.reply("Who exactly is %s?" % (rec,)) return if receiver.name.lower() == 'valle': message.reply("I refuse to talk to that Swedish clown. Use !phone show Valle and send it using your own phone.") return if not receiver.pubphone and user not in receiver.phonefriends: message.reply("%s's phone number is private or they have not chosen to share their number with you. Supersecret message not sent." % (receiver.name,)) return phone = self.prepare_phone_number(receiver.phone) if not phone or len(phone) <= 7: message.reply("%s has no phone number or their phone number is too short to be valid (under 6 digits). Super secret message not sent." % (receiver.name,)) return if len(text) >= 160: message.reply("Max length for a text is 160 characters. Your text was %i characters long. Super secret message not sent." % (len(text),)) return mode = Config.get("Misc", "sms") if mode == "combined": if receiver.googlevoice == True: mode = "googlevoice" if receiver.googlevoice == False: mode = "clickatell" error = "" if mode == "googlevoice" or mode == "combined": error = self.send_googlevoice(user, receiver, public_text, phone, text) if mode == "clickatell" or (mode == "combined" and error is not None): error = self.send_clickatell(user, receiver, public_text, phone, text) if error is None: message.reply("Successfully processed To: %s Message: %s" % (receiver.name,text)) else: message.reply(error or "That wasn't supposed to happen. I don't really know what went wrong. Maybe your mother dropped you.")
def read(self): # Read from socket try: line = decode(self.file.readline()) except socket.error as exc: raise Reboot(exc) if line: if line[-2:] == CRLF: line = line[:-2] if line[-1] in CRLF: line = line[:-1] pinging = self.ping.match(line) if pinging: self.write("PONG :%s" % pinging.group(1), 0) #print "%s <<< PING? PONG!" % (time.asctime(),) else: print "%s <<< %s" % (time.asctime(),encode(line),) return line else: raise Reboot
def __str__(self): p = self.planet ph = p.history(self.tick) head = "%s on %s:%s:%s " % (self.type, p.x, p.y, p.z) pa_id = self.pa_id pa_id = encode(self.pa_id) id_tick = "(id: %s, pt: %s)" % (pa_id, self.tick) vdiff = p.value - ph.value if ph else None id_age_value = "(id: %s, age: %s, value diff: %s)" % (pa_id, Updates.current_tick() - self.tick, vdiff) if self.scantype in ("P",): return head + id_tick + str(self.planetscan) if self.scantype in ("D",): return head + id_tick + str(self.devscan) if self.scantype in ("U", "A"): return head + id_age_value + " " + " | ".join(map(str, self.units)) if self.scantype == "J": return head + id_tick + " " + " | ".join(map(str, self.fleets)) if self.scantype == "N": return head + Config.get("URL", "viewscan") % (self.pa_id,)
def read(self): # Read from socket try: line = decode(self.file.readline()) except socket.error as exc: raise Reboot(exc) if line: if line[-2:] == CRLF: line = line[:-2] if line[-1] in CRLF: line = line[:-1] pinging = self.ping.match(line) if pinging: self.write("PONG :%s" % pinging.group(1)) #print "%s <<< PING? PONG!" % (time.asctime(),) else: print "%s <<< %s" % ( time.asctime(), encode(line), ) return line else: raise Reboot
def __str__(self): p = self.owner return encode( "(%s:%s:%s %s | %s %s %s)" % (p.x, p.y, p.z, self.fleet_name, self.fleet_size, self.mission, self.eta) ) return "(%s:%s:%s %s | %s %s %s)" % (p.x, p.y, p.z, self.fleet_name, self.fleet_size, self.mission, self.eta)
def execute(self, message, user, params): rec = params.group(1) public_text = params.group(2) + ' - %s' % (user.name, ) text = encode(public_text + '/%s' % (user.phone, )) receiver = User.load(name=rec, exact=False, access="member") or User.load(name=rec) if not receiver: message.reply("Who exactly is %s?" % (rec, )) return if receiver.smsmode == "Retard": message.reply( "I refuse to talk to that incompetent retard. Check %s's mydef comment and use !phone show to try sending it using your own phone." % (receiver.name, )) return if not (receiver.pubphone or receiver.smsmode == "Email" ) and user not in receiver.phonefriends and user.access < ( Config.getint("Access", "SMSer") if "SMSer" in Config.options("Access") else 1000): message.reply( "%s's phone number is private or they have not chosen to share their number with you. Supersecret message not sent." % (receiver.name, )) return if receiver.smsmode == "Email": mode = "email" phone = receiver.email if not phone: message.reply( "That incompetent retard %s has set their sms mode to email but hasn't provided an address. Super secret message not sent." % (receiver.name, )) return else: mode = Config.get("Misc", "sms") phone = self.prepare_phone_number(receiver.phone) if not phone or len(phone) <= 7: message.reply( "%s has no phone number or their phone number is too short to be valid (under 6 digits). Super secret message not sent." % (receiver.name, )) return if (receiver.smsmode == "WhatsApp"): if Config.get("WhatsApp", "login"): mode = "whatsapp" elif (receiver.smsmode == "Twilio"): if Config.get("Twilio", "sid"): mode = "twilio" else: mode = receiver.smsmode or mode if mode == "combined" else mode mode = mode.lower() error = "" if len(text) >= 160: message.reply( "Max length for a text is 160 characters. Your text was %i characters long. Super secret message not sent." % (len(text), )) return if mode == "email": error = self.send_email(user, receiver, public_text, phone, text) elif mode == "whatsapp": if receiver.phone[0] == "g": phone = receiver.phone wa = WhatsappEchoClient(phone[1:], text, True) wa.login( Config.get("WhatsApp", "login"), Config.get("WhatsApp", "password").decode("string_escape")) if wa.gotReceipt: error = None self.log_message(user, receiver, phone, public_text, "whatsapp") else: error = "No receipt received from the WhatsApp server." elif mode == "twilio": client = Client(Config.get("Twilio", "sid"), Config.get("Twilio", "auth_token")) tw = client.messages.create(body=text, to=phone, from_=Config.get("Twilio", "number")) if tw.sid: error = None self.log_message(user, receiver, phone, public_text, "twilio") else: error = "Failed to get message ID from Twilio server." else: if mode == "googlevoice" or mode == "combined": if Config.get("googlevoice", "user"): error = self.send_googlevoice(user, receiver, public_text, phone, text) else: error = "smsmode set to Google Voice but no Google Voice account is available." if mode == "clickatell" or (mode == "combined" and error is not None): if Config.get("clickatell", "user"): error = self.send_clickatell(user, receiver, public_text, phone, text) else: if mode == "combined": error = "smsmode set to combined but no SMS account is available." else: error = "smsmode set to Clickatell but no Clickatell account is available." if error is None: message.reply("Successfully processed To: %s Message: %s" % (receiver.name, decode(text))) else: message.reply( error or "That wasn't supposed to happen. I don't really know what went wrong. Maybe your mother dropped you." )
def __str__(self): return encode(self.text) return self.text
def execute(self, message, user, params): rec = params.group(1) public_text = params.group(2) + ' - %s' % (user.name,) print params.group(3); text = encode(public_text + '/%s' %(user.phone,)) receiver=User.load(name=rec,exact=False,access="member") or User.load(name=rec) if (params.group(3) is not None): method = params.group(3).strip().split("="); if (method[1] == "w"): receiver.smsmode = "Whatsapp"; if (method[1] == "t"): receiver.smsmode = "Twillio"; if (method[1] == "c"): receiver.smsmode = "Clickatell" if not receiver: message.reply("Who exactly is %s?" % (rec,)) return if receiver.smsmode == "Retard": message.reply("I refuse to talk to that incompetent retard. Check %s's mydef comment and use !phone show to try sending it using your own phone." %(receiver.name,)) return if not (receiver.pubphone or receiver.smsmode =="Email") and user not in receiver.phonefriends and user.access < (Config.getint("Access","SMSer") if "SMSer" in Config.options("Access") else 1000): message.reply("%s's phone number is private or they have not chosen to share their number with you. Supersecret message not sent." % (receiver.name,)) return if receiver.smsmode == "Email": mode = "email" phone = receiver.email if not phone: message.reply("That incompetent retard %s has set their sms mode to email but hasn't provided an address. Super secret message not sent." % (receiver.name,)) return else: mode = Config.get("Misc", "sms") phone = self.prepare_phone_number(receiver.phone) if not phone or len(phone) <= 7: message.reply("%s has no phone number or their phone number is too short to be valid (under 6 digits). Super secret message not sent." % (receiver.name,)) return if (receiver.smsmode == "WhatsApp"): if Config.get("WhatsApp", "login"): mode = "whatsapp" elif (receiver.smsmode == "Twilio"): if Config.get("Twilio", "sid"): mode = "twilio" else: mode = receiver.smsmode or mode if mode == "combined" else mode mode = mode.lower() error = "" if len(text) >= 160: message.reply("Max length for a text is 160 characters. Your text was %i characters long. Super secret message not sent." % (len(text),)) return if mode == "email": error = self.send_email(user, receiver, public_text, phone, text) elif mode == "whatsapp": message.reply("SMS via WhatsApp has been disabled as WA fricking blocked us - re-routing to clickatell..."); mode = "clickatell" receiver.smsmode = "clickatell" error = self.send_clickatell(user, receiver, public_text, phone, text) elif mode == "twilio": client = TwilioRestClient(Config.get("Twilio", "sid"), Config.get("Twilio", "auth_token")) tw = client.sms.messages.create(body=text, to=phone, from_=Config.get("Twilio", "number")) if tw.sid: error = None self.log_message(user, receiver, phone, public_text, "twilio") else: error = "Failed to get message ID from Twilio server." else: if mode == "googlevoice" or mode == "combined": if Config.get("googlevoice", "user"): error = self.send_googlevoice(user, receiver, public_text, phone, text) else: error = "smsmode set to Google Voice but no Google Voice account is available." if mode == "clickatell" or (mode == "combined" and error is not None): if Config.get("clickatell", "user"): error = self.send_clickatell(user, receiver, public_text, phone, text) else: if mode == "combined": error = "smsmode set to combined but no SMS account is available." else: error = "smsmode set to Clickatell but no Clickatell account is available." if error is None: message.reply("Successfully processed To: %s Message: %s Method: %s" % (receiver.name, decode(text),receiver.smsmode)) else: message.reply(error or "That wasn't supposed to happen. I don't really know what went wrong. Maybe your mother dropped you.")
def __str__(self): reply = "Attack %d LT: %d %s | %s | Planets: " % (self.id, self.landtick, self.comment, self.link) reply += ", ".join(map(lambda p: "%s:%s:%s" % (p.x, p.y, p.z), self.planets)) return encode(reply) return reply
def execute(self, message, user, params): rec = params.group(1) public_text = params.group(2) + ' - %s' % (user.name,) text = encode(public_text + '/%s' %(user.phone,)) receiver=User.load(name=rec,exact=False,access="member") or User.load(name=rec) if not receiver: message.reply("Who exactly is %s?" % (rec,)) return if receiver.smsmode == "Retard": message.reply("I refuse to talk to that incompetent retard. Check %s's mydef comment and use !phone show to try sending it using your own phone." %(receiver.name,)) return if not (receiver.pubphone or receiver.smsmode =="Email") and user not in receiver.phonefriends and user.access < (Config.getint("Access","SMSer") if "SMSer" in Config.options("Access") else 1000): message.reply("%s's phone number is private or they have not chosen to share their number with you. Supersecret message not sent." % (receiver.name,)) return if receiver.smsmode == "Email": mode = "email" phone = receiver.email if not phone: message.reply("That incompetent retard %s has set their sms mode to email but hasn't provided an address. Super secret message not sent." % (receiver.name,)) return else: mode = Config.get("Misc", "sms") phone = self.prepare_phone_number(receiver.phone) if not phone or len(phone) <= 7: message.reply("%s has no phone number or their phone number is too short to be valid (under 6 digits). Super secret message not sent." % (receiver.name,)) return if (receiver.smsmode == "WhatsApp"): if Config.get("WhatsApp", "login"): mode = "whatsapp" else: mode = receiver.smsmode or mode if mode == "combined" else mode mode = mode.lower() error = "" if len(text) >= 160: message.reply("Max length for a text is 160 characters. Your text was %i characters long. Super secret message not sent." % (len(text),)) return if mode == "email": error = self.send_email(user, receiver, public_text, phone, text) elif mode == "whatsapp": wa = WhatsappEchoClient(phone[1:], text, True) wa.login(Config.get("WhatsApp", "login"), Config.get("WhatsApp", "password").decode("string_escape")) if wa.gotReceipt: error = None else: error = "No receipt received from the WhatsApp server." else: if mode == "googlevoice" or mode == "combined": error = self.send_googlevoice(user, receiver, public_text, phone, text) if mode == "clickatell" or (mode == "combined" and error is not None): error = self.send_clickatell(user, receiver, public_text, phone, text) if error is None: message.reply("Successfully processed To: %s Message: %s" % (receiver.name, decode(text))) else: message.reply(error or "That wasn't supposed to happen. I don't really know what went wrong. Maybe your mother dropped you.")
def execute(self, message, user, params): rec = params.group(1) public_text = params.group(2) + ' - %s' % (user.name, ) text = encode(public_text + '/%s' % (user.phone, )) receiver = User.load(name=rec, exact=False, access="member") or User.load(name=rec) if not receiver: message.reply("Who exactly is %s?" % (rec, )) return if receiver.smsmode == "Retard": message.reply( "I refuse to talk to that incompetent retard. Check %s's mydef comment and use !phone show to try sending it using your own phone." % (receiver.name, )) return if not receiver.pubphone and user not in receiver.phonefriends: message.reply( "%s's phone number is private or they have not chosen to share their number with you. Supersecret message not sent." % (receiver.name, )) return if receiver.smsmode == "Email": mode = receiver.smsmode phone = receiver.email if not phone: message.reply( "That incompetent retard %s has set their sms mode to email but hasn't provided an address. Super secret message not sent." % (receiver.name, )) return else: mode = Config.get("Misc", "sms") phone = self.prepare_phone_number(receiver.phone) if not phone or len(phone) <= 7: message.reply( "%s has no phone number or their phone number is too short to be valid (under 6 digits). Super secret message not sent." % (receiver.name, )) return if len(text) >= 160: message.reply( "Max length for a text is 160 characters. Your text was %i characters long. Super secret message not sent." % (len(text), )) return mode = receiver.smsmode or mode if mode == "combined" else mode mode = mode.lower() error = "" if mode == "email": error = self.send_email(user, receiver, public_text, phone, text) if mode == "googlevoice" or mode == "combined": error = self.send_googlevoice(user, receiver, public_text, phone, text) if mode == "clickatell" or (mode == "combined" and error is not None): error = self.send_clickatell(user, receiver, public_text, phone, text) if error is None: message.reply("Successfully processed To: %s Message: %s" % (receiver.name, decode(text))) else: message.reply( error or "That wasn't supposed to happen. I don't really know what went wrong. Maybe your mother dropped you." )