1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-27 21:44:21 +00:00

Bots can now run functions in self.commands

This commit is contained in:
Steffo 2017-02-27 11:26:41 +01:00
parent 5f16353fbd
commit d05348e436

View file

@ -46,14 +46,16 @@ class Bot:
if len(data) > 0: if len(data) > 0:
self.offset = self.updates[-1].update_id + 1 self.offset = self.updates[-1].update_id + 1
async def parse_update(self): async def parse_update(self, update):
"""Parse the first update in the list.""" """Parse the first update in the list."""
update = self.updates[0] # Add the chat to the chat list
if update.message.chat not in self.chats: if update.message.chat not in self.chats:
self.chats.append(update.message.chat) self.chats.append(update.message.chat)
# Add the user to the chat
chat = self.find_chat(update.message.chat.chat_id) chat = self.find_chat(update.message.chat.chat_id)
if update.message.sent_from not in chat.users: if update.message.sent_from not in chat.users:
chat.users.append(update.message.sent_from) chat.users.append(update.message.sent_from)
# Add / edit the message to the message list
if not update.message.edited: if not update.message.edited:
chat.messages.append(update.message) chat.messages.append(update.message)
else: else:
@ -63,7 +65,17 @@ class Bot:
pass pass
else: else:
chat.messages[i] = update.message chat.messages[i] = update.message
del self.updates[0] # Check if a command can be run
# TODO: use message entities?
if isinstance(update.message.content, str) and update.message.content.startswith("/"):
command = update.message.content.split(" ")[0].lstrip("/")
if command in self.commands:
self.commands[command](self, update)
def find_update(self, upd_id):
for update in self.updates:
if update.update_id == upd_id:
return update
def find_chat(self, chat_id): def find_chat(self, chat_id):
for chat in self.chats: for chat in self.chats:
@ -323,9 +335,14 @@ class Venue:
raise NotImplementedError("Not yet.") raise NotImplementedError("Not yet.")
b = Bot("infopz pls non sono così stupido") def legoflegend(bot, update):
print("Message received: " + repr(update))
b = Bot("ciao ruozi ciao ciao")
b.commands["lol"] = legoflegend
while True: while True:
loop.run_until_complete(b.get_updates()) loop.run_until_complete(b.get_updates())
while len(b.updates) > 0: for u in b.updates:
loop.create_task(b.parse_update()) loop.create_task(b.parse_update(u))
b.updates = list()
print("Completed.") print("Completed.")