Adapt glossbot to new message handling implementation

This commit is contained in:
Luke Murphy 2021-01-16 17:30:28 +01:00
parent 7d71fd2ba4
commit 4e883004fd
No known key found for this signature in database
GPG Key ID: 5E2EF5A63E3718CC

View File

@ -389,8 +389,6 @@ class Bot(ClientXMPP):
self.reply(cleandoc(self.help), **kwargs) self.reply(cleandoc(self.help), **kwargs)
except AttributeError: except AttributeError:
self.reply("No help found 🤔️", **kwargs) self.reply("No help found 🤔️", **kwargs)
else:
self.log.info(f"'{message.content}' not handled")
class EchoBot(Bot): class EchoBot(Bot):
@ -451,29 +449,34 @@ class GlossBot(Bot):
def group(self, message): def group(self, message):
"""Handle glossary commands.""" """Handle glossary commands."""
if "!add" in message.body: if "@add" in message.content:
try: try:
_, body = message.body.split(":!add") parsed = self.parse_add(message)
entry, definition = body.strip().split("-").strip() self.add(*parsed, room=message.room)
self.add(entry, definition, room=message.room) except Exception:
except ValueError: response = f"Couldn't understand '{message.content}'?"
self.reply("Hmmm, couldn't read that", room=message.room) self.reply(response, room=message.sender)
elif "@rm" in message.content:
elif "!rm" in message.body:
try: try:
entry = message.body.split(":!rm")[-1].strip() parsed = message.content.split("@rm")[-1].strip()
self.rm(entry, room=message.room) self.rm(parsed, room=message.room)
except ValueError: except Exception:
self.reply("Hmmm, couldn't read that", room=message.room) response = f"Couldn't understand '{message.content}'?"
self.reply(response, room=message.sender)
elif "!rand" in message.body: elif "@rand" in message.content:
self.rand(room=message.room) self.rand(room=message.room)
elif "@ls" in message.content:
elif "!ls" in message.body:
self.ls(room=message.room) self.ls(room=message.room)
else: else:
self.log.error(f"{message.body} is not recognised") self.log.info(f"{message.text} not recognised as glossbot command")
def parse_add(self, message):
"""Parse the add command syntax."""
try:
replaced = message.content.replace("@add", "")
return [s.strip() for s in replaced.split("-")]
except ValueError:
self.log.error(f"Failed to parse {message.content}")
def add(self, entry, definition, **kwargs): def add(self, entry, definition, **kwargs):
"""Add a new entry.""" """Add a new entry."""
@ -483,8 +486,7 @@ class GlossBot(Bot):
def rand(self, **kwargs): def rand(self, **kwargs):
"""List a random entry.""" """List a random entry."""
if not self.db.keys(): if not self.db.keys():
self.reply("Glossary is empty", **kwargs) return self.reply("Glossary is empty 🙃️", **kwargs)
return
entry = choice(self.db.keys()) entry = choice(self.db.keys())
self.reply(f"{entry} - {self.db[entry]}", **kwargs) self.reply(f"{entry} - {self.db[entry]}", **kwargs)
@ -492,16 +494,15 @@ class GlossBot(Bot):
def ls(self, **kwargs): def ls(self, **kwargs):
"""List all entries.""" """List all entries."""
if not self.db.keys(): if not self.db.keys():
self.reply("Glossary is empty", **kwargs) return self.reply("Glossary is empty 🙃️", **kwargs)
return
for entry in self.db.keys(): for entry in sorted(self.db.keys()):
self.reply(f"{entry} - {self.db[entry]}", **kwargs) self.reply(f"{entry} - {self.db[entry]}", **kwargs)
def rm(self, entry, **kwargs): def rm(self, entry, **kwargs):
"""Remove an entry.""" """Remove an entry."""
try: if entry not in self.db.keys():
self.db[entry].delete() return self.reply(f"{entry} doesn't exist?", **kwargs)
self.reply("Removed ✌️", **kwargs)
except KeyError: self.db.delete(entry)
self.reply(f"{entry} doesn't exist?", **kwargs) self.reply("Removed ✌️", **kwargs)