Improve listening usability

Add Listener.register and Listener.run
This commit is contained in:
Mads Marquart
2020-02-05 14:27:08 +01:00
parent ae2bb41509
commit 085bbba302
5 changed files with 86 additions and 36 deletions

View File

@@ -1,17 +1,15 @@
import fbchat
session = fbchat.Session.login("<email>", "<password>")
listener = fbchat.Listener.connect(session, chat_on=False, foreground=False)
listener = fbchat.Listener(session=session, chat_on=False, foreground=False)
def on_message(event):
@listener.register
def on_message(event: fbchat.MessageEvent):
print(f"{event.message.text} from {event.author.id} in {event.thread.id}")
# If you're not the author, echo
if event.author.id != session.user.id:
event.thread.send_text(event.message.text)
for event in listener.listen():
if isinstance(event, fbchat.MessageEvent):
on_message(event)
listener.run()

View File

@@ -15,10 +15,10 @@ old_nicknames = {
}
session = fbchat.Session.login("<email>", "<password>")
listener = fbchat.Listener.connect(session, chat_on=False, foreground=False)
listener = fbchat.Listener(session=session, chat_on=False, foreground=False)
@listener.register
def on_color_set(event: fbchat.ColorSet):
if old_thread_id != event.thread.id:
return
@@ -27,6 +27,7 @@ def on_color_set(event: fbchat.ColorSet):
event.thread.set_color(old_color)
@listener.register
def on_emoji_set(event: fbchat.EmojiSet):
if old_thread_id != event.thread.id:
return
@@ -35,6 +36,7 @@ def on_emoji_set(event: fbchat.EmojiSet):
event.thread.set_emoji(old_emoji)
@listener.register
def on_title_set(event: fbchat.TitleSet):
if old_thread_id != event.thread.id:
return
@@ -43,6 +45,7 @@ def on_title_set(event: fbchat.TitleSet):
event.thread.set_title(old_title)
@listener.register
def on_nickname_set(event: fbchat.NicknameSet):
if old_thread_id != event.thread.id:
return
@@ -55,6 +58,7 @@ def on_nickname_set(event: fbchat.NicknameSet):
event.thread.set_nickname(event.subject.id, old_nickname)
@listener.register
def on_people_added(event: fbchat.PeopleAdded):
if old_thread_id != event.thread.id:
return
@@ -64,6 +68,7 @@ def on_people_added(event: fbchat.PeopleAdded):
event.thread.remove_participant(added.id)
@listener.register
def on_person_removed(event: fbchat.PersonRemoved):
if old_thread_id != event.thread.id:
return
@@ -75,16 +80,4 @@ def on_person_removed(event: fbchat.PersonRemoved):
event.thread.add_participants([removed.id])
for event in listener.listen():
if isinstance(event, fbchat.ColorSet):
on_color_set(event)
elif isinstance(event, fbchat.EmojiSet):
on_emoji_set(event)
elif isinstance(event, fbchat.TitleSet):
on_title_set(event)
elif isinstance(event, fbchat.NicknameSet):
on_nickname_set(event)
elif isinstance(event, fbchat.PeopleAdded):
on_people_added(event)
elif isinstance(event, fbchat.PersonRemoved):
on_person_removed(event)
listener.run()

View File

@@ -1,10 +1,10 @@
import fbchat
session = fbchat.Session.login("<email>", "<password>")
listener = fbchat.Listener.connect(session, chat_on=False, foreground=False)
listener = fbchat.Listener(session=session, chat_on=False, foreground=False)
@listener.register
def on_message(event):
# We can only kick people from group chats, so no need to try if it's a user chat
if not isinstance(event.thread, fbchat.Group):
@@ -14,6 +14,4 @@ def on_message(event):
event.thread.remove_participant(event.author.id)
for event in listener.listen():
if isinstance(event, fbchat.MessageEvent):
on_message(event)
listener.run()