33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
"""
|
||
This plugin provides a command to get a random fortune message.
|
||
"""
|
||
import asyncio
|
||
import logging
|
||
import simplematrixbotlib as botlib
|
||
|
||
async def handle_command(room, message, bot, prefix, config):
|
||
match = botlib.MessageMatch(room, message, bot, prefix)
|
||
if match.is_not_from_this_bot() and match.prefix() and match.command("fortune"):
|
||
logging.info("Received !fortune command")
|
||
try:
|
||
proc = await asyncio.create_subprocess_exec(
|
||
'/usr/games/fortune',
|
||
stdout=asyncio.subprocess.PIPE,
|
||
stderr=asyncio.subprocess.PIPE
|
||
)
|
||
stdout, stderr = await proc.communicate()
|
||
if proc.returncode == 0 and stdout:
|
||
fortune_text = "🃏 " + stdout.decode('UTF-8')
|
||
else:
|
||
fortune_text = "🃏 Fortune command failed."
|
||
await bot.api.send_markdown_message(room.room_id, fortune_text)
|
||
except Exception as e:
|
||
logging.error(f"Fortune error: {e}")
|
||
await bot.api.send_text_message(room.room_id, "Fortune unavailable.")
|
||
|
||
__version__ = "1.0.1"
|
||
__author__ = "Funguy Bot"
|
||
__description__ = "Random fortune message"
|
||
__help__ = """<details><summary><strong>!fortune</strong> – Random fortune</summary>
|
||
<p>Runs the <code>/usr/games/fortune</code> utility.</p></details>"""
|