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:
parent
5f16353fbd
commit
d05348e436
1 changed files with 23 additions and 6 deletions
29
telegram.py
29
telegram.py
|
@ -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.")
|
Loading…
Reference in a new issue