Adapt glossbot to new message handling implementation
This commit is contained in:
parent
7d71fd2ba4
commit
4e883004fd
61
xbotlib.py
61
xbotlib.py
@ -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)
|
||||||
|
Reference in New Issue
Block a user