예제 #1
0
    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))
예제 #2
0
파일: Helm.py 프로젝트: winzlebee/PyTrek
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.")
예제 #3
0
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('Сообщение было отправлено')
예제 #4
0
 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)
예제 #5
0
	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)
예제 #6
0
    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
예제 #7
0
    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
예제 #8
0
 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)
예제 #9
0
    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
예제 #10
0
    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)
예제 #11
0
    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
예제 #12
0
    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
예제 #13
0
 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
예제 #14
0
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()
예제 #15
0
    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
예제 #16
0
	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
예제 #17
0
	def Logout(self):
		#leave
		self.allusers.Del(self.user)
		messages.Message(self).All(SESSION_DISCONNECT % self.user.name)
		self.logged = 0
		del(self.user)
예제 #18
0
    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):
예제 #19
0
# Настройки вебхуков
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])
예제 #20
0
# Настройки вебхуков
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])
예제 #21
0
def add_new_message(message_text):
    new_message = messages.Message(message_text)
    db.session.add(new_message)
    db.session.commit()
    return new_message.id
예제 #22
0
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.")
예제 #23
0
파일: main.py 프로젝트: Abbas766/Notifera
import messages

m = messages.Message()
m.sendmessage("Abbas will taste success very soon.")
예제 #24
0
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)