Browse Source

Improve `/fortune` command

Send 'typing' action, delete message of the user who requested a fortune
telling and add his/her name to epigram in reply

closes #8
feature-fuel-prices
Vladislav Glinsky 6 years ago
parent
commit
7441d3a5a3
Signed by: cl0ne GPG Key ID: 9D058DD29491782E
  1. 14
      devpotato_bot/command_handlers/fortune.py
  2. 2
      setup.py

14
devpotato_bot/command_handlers/fortune.py

@ -1,7 +1,7 @@
import logging
import subprocess
from telegram import Update
from telegram import Update, Message, ChatAction, Bot, ParseMode
from telegram.ext import CallbackContext, run_async
_logger = logging.getLogger(__name__)
@ -10,9 +10,19 @@ _logger = logging.getLogger(__name__)
@run_async
def _fortune_callback(update: Update, context: CallbackContext):
"""Get random epigram from `fortune`."""
message: Message = update.effective_message
bot: Bot = context.bot
bot.send_chat_action(chat_id=message.chat_id, action=ChatAction.TYPING)
try:
result = subprocess.run(['fortune', '-a'], capture_output=True, text=True, timeout=2)
update.message.reply_text(result.stdout, quote=False, disable_web_page_preview=True)
context.bot.delete_message(message.chat_id, message.message_id)
user_name = update.effective_user.mention_html()
reply_text = (
f'<b>Fortune</b> for {user_name}:\n'
'\n'
f'{result.stdout}'
)
bot.send_message(message.chat_id, reply_text, parse_mode=ParseMode.HTML)
except (OSError, TimeoutError) as error:
_logger.warning('Failed to call fortune executable: %s', error)

2
setup.py

@ -2,7 +2,7 @@ from setuptools import setup
setup(
name = 'devpotato-bot',
version = '0.3.3',
version = '0.3.4',
description='Telegram bot for cryptopotato chat',
packages = ['devpotato_bot'],
python_requires='>=3.6',

Loading…
Cancel
Save