def __init__(self, session, handler, message): commandlist = [] for command in os.listdir(COMMANDS_DIR): if not command in COMMANDS_EXCEPTIONS and command.endswith(".py"): commandlist.append(command[:-3]) if session.login: session.user.time = time.time() message = message.strip() if message.startswith("."): command = message.split()[0] command = command[1:].lower() message = message[len(command) + 2:] #empty command if command == "": messages.Message(session).User(COMMANDS_EMPTY) return #command completion cmd_match = [] for cmd in commandlist: #break if matches exactly if cmd == command: cmd_match = [cmd] break if cmd.startswith(command): cmd_match.append(cmd) if len(cmd_match) == 1: command = cmd_match[0] elif len(cmd_match) > 1: messages.Message(session).User(COMMANDS_MULTIMATCH % cmd_match) return #use command or command not available if command in commandlist: commandfile = COMMANDS_DIR + "." + command commandmodule = __import__(commandfile) components = commandfile.split(".") for component in components[1:]: commandmodule = getattr(commandmodule, component) getattr(commandmodule, 'Execute')(session, message) else: messages.Message(session).User(COMMANDS_NA % command) else: #its a .say if message: messages.Message(session).Room(MESSAGE % (session.user.name, message))
def messageRecieved(msg): message = pickle.loads(msg) print(message) if isinstance(message, messages.MapMessage): pt_ui_navElement.setMap(message.map) helm_client.sendMessage(pickle.dumps( messages.Message())) # Send a blank message as acknowledgement print("Map updated and loaded.")
def send_message(conn, login): receiver = input('Имя получателя: ') message = input('Введите ваше сообщение:\n') sender = login d = time.strftime('%Y-%m-%d %H:%M:%S') msg = messages.Message(d, sender, receiver, message) msg = pickle.dumps(('send', msg)) conn.send(msg) print('Сообщение было отправлено')
def test_text_getter_and_setter(self): ''' desc: test text id getter and setter. ''' test_item = messages.Message() test_text = 'Doin a lil bit of modeling population dynamics ' \ 'seems fun but would need to improve my math ' \ 'background a lot for that kinda shiz' test_item.text = test_text self.assertEqual(test_text, test_item.text)
def __init__(self,handler): self.handler = handler self.allusers = users.All() messages.Message(self).Prompt(LOGIN_PROMPT) self.username = self.Input().strip() if "\xff" in self.username: self.username = self.username[21: ] self.login = 0 while (not self.username or not self.username.isalnum() or len(self.username) > LOGIN_MAX_LENGTH or (self.username.lower() in LOGIN_COMMANDS)): if not self.username: messages.Message(self).User(LOGIN_EMPTY) elif not self.username.isalnum(): messages.Message(self).User(LOGIN_ALNUM_ERROR) elif len(self.username) > LOGIN_MAX_LENGTH: messages.Message(self).User(LOGIN_LENGTH_ERROR % LOGIN_MAX_LENGTH) else: self.Process("." + self.username.lower()) messages.Message(self).Prompt(LOGIN_PROMPT) self.username = self.Input().strip() if self.username.lower() == LOGIN_QUIT: self.logged = 0 else: # CheckUser returns 1 if the guy is getting here for the first time newuser = self.CheckUser() # And we tell that to Login self.logged = self.Login(newuser)
def trigger_line(self, line: str, number: int) -> typing.List[messages.Message]: ret = [] for match in re.finditer(r'\^-', line): ret.append(messages.Message( messages.PositionInfo((match.start(0), ), line, number), 'Remember to add curly braces `{}` around powers with more than one symbol.', messages.Severity.WARNING )) return ret
def trigger_line(self, line: str, number: int) -> typing.List[messages.Message]: ret = [] for match in re.finditer(r'\(([^\)]*(\\frac|\\sum|\\int)[^\)]*)\)', line): if not ('\\left(' + match.group(1) in line or '\\(' + match.group(1) in line): ret.append(messages.Message( messages.PositionInfo((match.start(0), match.end(0)), line, number), 'Did you mean to auto-size these brackets with `\\left` and `\\right?`', messages.Severity.WARNING )) return ret
def test_replies_getter_and_setter(self): ''' desc: test replies getter and setter. ''' test_item = messages.Message() test_replies = [ 'I like the nature', '''Guess confidence is one of the most important leadership qualities lol''', 'How many days there do you have left' ] test_item.replies = test_replies self.assertEqual(test_replies, test_item.replies)
def trigger_output(self, output: typing.List[str], file: typing.List[str]) -> typing.List[messages.Message]: ret = [] for output_num, line in enumerate(output): if line.startswith('!'): curr = output_num while not output[curr].startswith('l.'): curr += 1 if curr == len(output): curr = -1 break msg = re.sub(r'^! ', r'', line) msg = self._error_lookup(msg) if len(msg) == 0: continue if re.search(r'`([^\']*)\'', line): var = re.search(r'`([^\']*)\'', line).group(1) msg = re.sub(r'%', var, msg) if curr != -1: num = int(re.search(r'^l.([0-9]+) ', output[curr]).group(1)) pos = len(re.sub(r'^l.[0-9]+ ', r'', output[curr])) ret.append(messages.Message( messages.PositionInfo((pos - 1, ), file[num - 1], num), msg, messages.Severity.ERROR )) else: ret.append(messages.Message( None, msg, messages.Severity.ERROR )) return ret
def test_sort_messages(self): ''' desc: checks the sort messages method. ''' test_item = chat_member.ChatMember() message_1 = messages.Message(owner_user_name='Alice') message_2 = messages.Message(owner_user_name='Bob') message_3 = messages.Message(owner_user_name='Carol') message_1.text = 'Hello chat.' message_2.text = 'Hi.' message_3.text = 'Hooray.' message_1.num_of_reacts = 3 message_2.num_of_reacts = 1 message_3.num_of_reacts = 2 test_item.current_messages = [message_1, message_2, message_3] sorted_list = test_item.sort_messages() self.assertEqual(message_1.text, sorted_list[0].text) self.assertEqual(message_3.text, sorted_list[1].text) self.assertEqual(message_2.text, sorted_list[2].text)
def get_messages(self): messages_by_sender = {} for message in self.twilio_client.messages.list(): contact_key = message.from_ if message.direction == 'inbound' else message.to messages_by_sender.setdefault(contact_key, []).append( messages.Message( text=message.body, incoming=message.direction=='inbound', unique_key=message.sid, timestamp=message.date_sent, service_name=self.service_name(), images=[self._image_url(media) for media in message.media.list()] if int(message.num_media) > 0 else [], ) ) return messages_by_sender
def __iter__(self): while True: size_raw = self.stream.read(4) if len(size_raw) < 4: break size = unpack("<L", size_raw)[0] field_names = ("_type", "reserved1", "client_build", "client_addr", "client_port", "server_addr", "server_port", "tv_sec", "tv_usec", "opcode", "reserved2") field_values = unpack("<BBHLHLHLLL16s", self.stream.read(44)) field_dict = dict(zip(field_names, field_values)) packet_data = self.stream.read(size - 48) if not field_dict["_type"] in (0, 1): # Unknown type of packet. We better skip it. continue if field_dict["opcode"] in messages.opcode_map: # We know this opcode and can instantiate a specific class # from it. m = messages.opcode_map[field_dict["opcode"]]() else: # The opcode is not known - instantiate a generic Message and # set its opcode manually. m = messages.Message() m._opcode = field_dict["opcode"] # Apply the new attributes, prefixed with _ for n, v in field_dict.iteritems(): setattr(m, "_" + n, v) try: # Some messages parse their data upon receiving it, and if # something goes wrong then, we don't want the app to crash. m.data = packet_data except: pass yield m
def JoinNetwork(self, target_id, bootstrap_node_ip): ''' Joins a network through a node on IP bootstrap_node_ip. Arguments: bootstrap_node_ip: The IP address of the node through which we will join a network. ''' msg = messages.JoiningNetworkMessage(self.node_id, target_id, bootstrap_node_ip) self.SendMessage(msg, bootstrap_node_ip, UDP_PORT) # Wait to get a response from the bootstrap node json_message, addr = self.udp_socket.recvfrom(MAX_MESSAGE_SIZE) response = messages.Message(json_message=json_message) # We incorporate all of the bootstrap node's routing table into our own self.routing_table_lock.acquire() self.routing_table.from_json(response.msg["routing_table"]) self.routing_table_lock.release() # The NetID isn't used for any external communication, so it doesn't matter # if it's random within each client's internals. self.net_id = random.randint(0, 4096) return self.net_id
def dt_listener(msg): global buffer_count x = msg.data[0] y = msg.data[1] if x**2 + y**2 == 0: return magnitude = max((abs(y) + abs(x)) / math.sqrt(x**2 + y**2), 1e-9) left = int(255 * (y + x) / magnitude) right = int(255 * (y - x) / magnitude) speeds = [right, right, right, left, left, left] mess = messages.Message(messages.TARGET_SYSTEMS.DRIVE, speeds) ser.write(b'a' + mess.serialize()) while ser.in_waiting: print(ser.readline()) print("real hash: " + str(mess.hash)) if buffer_count > CLEAR_BUFFER: ser.reset_input_buffer() ser.reset_output_buffer() buffer_count += 1 rate.sleep()
def trigger_output( self, output: typing.List[str], file: typing.List[str]) -> typing.List[messages.Message]: ret = [] for line in output: if line.startswith('Overfull'): num = int(re.search(r'lines ([0-9]+)--', line).group(1)) wideness = int( re.search(r'([0-9]+).[0-9]pt too wide', line).group(1)) msg, severity = ('slightly too wide', messages.Severity.WARNING) if ( 'badness' not in line and wideness <= 50 ) else ('much too wide', messages.Severity.ERROR) ret.append( messages.Message( messages.PositionInfo(None, file[num - 1], num), f'Overfull horizontal box ({msg}). Consider reducing the width of the content in this block.', severity)) return ret
def Login(self, newuser): # CLS: both techniques since some telnet clients are less strict than others messages.Message(self).User(CLS) if (RULES_SHOW and (newuser == 1)): try: rules = open(RULES_FILE,mode='r') for line in rules: self.handler.request.send(line + "\r") rules.close() if RULES_SHOW == 2: messages.Message(self).Prompt(RULES_PROMPT) acceptrules = self.Input().strip().lower() while (not acceptrules == RULES_ACCEPT.lower() and not acceptrules == RULES_DECLINE.lower()): messages.Message(self).User(RULES_HELP % (RULES_ACCEPT, RULES_DECLINE)) messages.Message(self).Prompt(RULES_PROMPT) acceptrules = self.Input().strip().lower() if acceptrules == RULES_DECLINE.lower(): return 0 except IOError: self.handler.request.send("") if MOTD_SHOW: try: motd = open(MOTD_FILE,mode='r') for line in motd: self.handler.request.send(line + "\r") motd.close() messages.Message(self).Prompt(MOTD_PROMPT) except IOError: self.handler.request.send("") motdprompt = self.Input().strip() newuser = 1 #replace any old session. TODO: (is it working properly?) if self.allusers.userdict.has_key(self.username.lower()): newuser = 0 olduser = self.allusers.Get(self.username.lower()) olduser.session.logged = 0 del(olduser.handler) del(olduser.session) #rank rank=userdata.GetField(self.username.lower(),RANK_FIELD) if(rank == ''): rank=DEFAULT_RANK #add it to the list self.user = users.User(self,self.handler,self.username,rank) self.allusers.Add(self.user) if (newuser == 1): messages.Message(self).All(SESSION_CONNECT % self.user.name) self.login = 1 return 1
def Logout(self): #leave self.allusers.Del(self.user) messages.Message(self).All(SESSION_DISCONNECT % self.user.name) self.logged = 0 del(self.user)
daemon_threads = True pass if __name__ == "__main__": HOST, PORT = "", int(sys.argv[1]) server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler) server.distributionQueue = Queue.Queue() server.messages = [] server.clientIDLock = threading.Lock() server.clientIDCounter = 0 server.messageIDLock = threading.Lock() server.messageIDCounter = 0 server.baseMessageTree = trees.MessageTree( m.Message(None, None, None, "My conversation subject")) server.baseMessageTree.message.ID = 0 def assignID(message): server.messageIDLock.acquire() server.messageIDCounter += 1 message.ID = server.messageIDCounter server.messageIDLock.release() def distributeMessage(): while True: message = server.distributionQueue.get() for queue in server.messages: queue.put(message) def writeMessageTreeToFile(filename):
# Настройки вебхуков WEBHOOK_HOST = '<your_host>' WEBHOOK_PORT = 88 # 443, 80, 88 или 8443 (порт должен быть открыт!) WEBHOOK_LISTEN = '0.0.0.0' # На некоторых серверах придется указывать такой же IP, что и выше # Путь к сертификатам WEBHOOK_SSL_CERT = './webhook_cert.pem' # Путь к сертификату WEBHOOK_SSL_PRIV = './webhook_pkey.pem' # Путь к приватному ключу # Путь к боту WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT) WEBHOOK_URL_PATH = "/%s/" % (config.token) bot = telebot.TeleBot(config.token) msg = messages.Message(bot, config.db_path) db = db.DataBase(config.db_path, config.db_file) # Вебхук-сервер class WebhookServer(object): @cherrypy.expose def index(self): if 'content-length' in cherrypy.request.headers and \ 'content-type' in cherrypy.request.headers and \ cherrypy.request.headers['content-type'] == 'application/json': length = int(cherrypy.request.headers['content-length']) json_string = cherrypy.request.body.read(length).decode("utf-8") update = telebot.types.Update.de_json(json_string) # Эта функция обеспечивает проверку входящего сообщения bot.process_new_updates([update])
# Настройки вебхуков WEBHOOK_HOST = '<your_host>' WEBHOOK_PORT = 8443 # 443, 80, 88 или 8443 (порт должен быть открыт!) WEBHOOK_LISTEN = '0.0.0.0' # На некоторых серверах придется указывать такой же IP, что и выше # Путь к сертификатам WEBHOOK_SSL_CERT = './webhook_cert.pem' # Путь к сертификату WEBHOOK_SSL_PRIV = './webhook_pkey.pem' # Путь к приватному ключу # Путь к боту WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT) WEBHOOK_URL_PATH = "/%s/" % (config.token) # Запуск бота bot = telebot.TeleBot(config.token, threaded=False) msg = messages.Message(bot) db = db.DataBase(config.db_path, config.db_file) # Вебхук-сервер class WebhookServer(object): @cherrypy.expose def index(self): if 'content-length' in cherrypy.request.headers and \ 'content-type' in cherrypy.request.headers and \ cherrypy.request.headers['content-type'] == 'application/json': length = int(cherrypy.request.headers['content-length']) json_string = cherrypy.request.body.read(length).decode("utf-8") update = telebot.types.Update.de_json(json_string) # Эта функция обеспечивает проверку входящего сообщения bot.process_new_updates([update])
def add_new_message(message_text): new_message = messages.Message(message_text) db.session.add(new_message) db.session.commit() return new_message.id
who_logined = "" while True: option = input( "Choose what you want to do :\n1. Register\n2. Log in\n3. Send a message\n4. Get messages\n5. Log out\n6. Exit\n>>>" ) if option == "1": registrator = account_loginer_registerer.Authentificator() registrator.register() elif option == "2": loginer = account_loginer_registerer.Authentificator() who_logined = loginer.loginer() elif option == "3": if who_logined == "": print("You have not logged in !") else: messenger = messages.Message(who_logined) messenger.send() elif option == "4": if who_logined == "": print("You have not logged in!") else: messenger = messages.Message(who_logined) messenger.get() elif option == "5": who_logined = "" print("Logged out !") elif option == "6": break else: print( "There is no such an option. Please enter the appropriate option.")
import messages m = messages.Message() m.sendmessage("Abbas will taste success very soon.")
def default_machine(context): world = worlds.default_world() Q = messages.Message("[] is a grid", messages.WorldMessage(world)) budget = 100000 machine = main.RegisterMachine(context=context, nominal_budget=budget) return machine.add_register(Q)