diff --git a/README.md b/README.md
index 314cb9f..0862f9b 100644
--- a/README.md
+++ b/README.md
@@ -26,4 +26,22 @@ Bot is easily understandable reading in-code comments of the handler functions,
### How do I read logs of running Lutz bot daemon?
Continuous log reading on Linux:
-```# journalctl --unit=lutz.service -f --no-pager```
\ No newline at end of file
+```# journalctl --unit=lutz.service -f --no-pager```
+
+
+### Hot to interact with Lutz bot?
+Bot can recieve commands and behave depending on chat situation.
+
+Standard command pack for bot father includes:
+* nobot - Telebot shouldn't be your first Python project
+* noparse - Web-scraper shouldn't be your first Python project
+* nogui - GUI app shouldn't be your first Python project
+* nometa - Don't ask meta questions
+* neprivet - Don't hello
+* quote - Random quote
+* add - Add quote
+* g - Google it [Request text can be any text from replied message or arguments if there's text after `\g example`]
+* rules - Chat rules
+* faq - FAQ
+* books - Pythonista's Library (
+* lutz - Send Lutz book
\ No newline at end of file
diff --git a/app/admin.py b/app/admin.py
index d99947c..63f7d41 100644
--- a/app/admin.py
+++ b/app/admin.py
@@ -2,7 +2,7 @@ from importlib import reload
from . import config
from . import me
-from . import reminder
+from . import stan
from . import report
from . import bot as bot_mod
@@ -12,3 +12,4 @@ def reload_modules():
reload(config)
reload(me)
reload(bot_mod)
+ reload(stan)
diff --git a/app/bot.py b/app/bot.py
index 8c0a017..cc6f424 100644
--- a/app/bot.py
+++ b/app/bot.py
@@ -5,10 +5,12 @@ from telebot import types
import logging
from urllib import parse
+from . import stan
from . import reminder
from . import admin
from . import report
-from .config import bot, URL_RX, ALLOWED_WORDS, ADMIN_ID, TOKEN, PYTHONCHATRU, WHITEUN, WHITEIDS
+from .config import bot, URL_RX, ALLOWED_WORDS, ADMIN_ID, TOKEN, PYTHONCHATRU, WHITEUN, WHITEIDS, RUS_ENG_TABLE, \
+ ENG_RUS_TABLE, RUS
from .me import get_me
# https://core.telegram.org/bots/api Telegram Bot API
@@ -141,10 +143,21 @@ def send_lutz_command(message):
bot.send_document(
message.chat.id,
document='BQACAgQAAxkBAAPBYsWJG9Ml0fPrnbU9UyzTQiQSuHkAAjkDAAIstCxSkuRbXAlcqeQpBA',
- caption="""Learning Python, 5th Edition
- ├ by Mark Lutz
- └ Released June 2013""",
- parse_mode='HTML')
+ caption="вот, не позорься")
+
+
+@bot.message_handler(commands=['bdmtss'])
+def send_bdmtss_audio(message):
+ bot.send_audio(message.chat.id, 'CQACAgIAAxkBAAIJT2Oej0ir56sDp5v2lbUsT75rxmKVAAKAJwACOo7xSEuuBINnWxEKLAQ')
+
+
+@bot.message_handler(commands=['tr'])
+def translate_layout(message):
+ if message.reply_to_message and message.reply_to_message.text:
+ if message.reply_to_message.text[0] in RUS:
+ bot.send_message(message.chat.id, message.reply_to_message.text.translate(RUS_ENG_TABLE))
+ else:
+ bot.send_message(message.chat.id, message.reply_to_message.text.translate(ENG_RUS_TABLE))
@bot.message_handler(commands=['lib', 'library', 'book', 'books'])
@@ -210,6 +223,20 @@ def send_stats(message):
parse_mode='HTML', disable_web_page_preview=True)
+@bot.message_handler(commands=['add'])
+def add_stan_quote(message):
+ if message.reply_to_message and message.reply_to_message.text:
+ with open('Stan.txt', 'a', encoding='utf8') as stan_quotes:
+ stan_quotes.write('\n' + message.reply_to_message.text)
+ bot.send_message(message.chat.id, f'Добавил: {message.reply_to_message.text}',
+ parse_mode='HTML', disable_web_page_preview=True)
+
+
+@bot.message_handler(commands=['quote'])
+def stan_speak(message):
+ bot.send_message(message.chat.id, stan.speak(0))
+
+
@bot.message_handler(commands=['reset_stats'])
def send_stats(message):
report.reset_report_stats()
@@ -243,11 +270,6 @@ def admin_panel(message: types.Message):
logging.warning(f'[UNBAN (M)] {unban_id}')
-def check_chat(message: types.Message):
- if message.chat.id == PYTHONCHATRU:
- return True
-
-
@bot.message_handler(commands=['tsya'])
def send_tsya_link(message: types.Message):
""" тся/ться """
@@ -344,7 +366,12 @@ def check_unwanted_list(type_message: types.Message) -> bool:
@bot.message_handler(func=check_unwanted_list)
def unwanted_mentions(message: types.Message):
""" Reply to unwanted mentions. """
- bot.reply_to(message, f'У нас таких не любят! 🥴', parse_mode='HTML')
+ bot.reply_to(message, f'у нас тут таких не любят')
+
+
+def check_chat(message: types.Message):
+ if message.chat.id == PYTHONCHATRU:
+ return True
@bot.message_handler(func=check_chat, content_types=['text', 'sticker', 'photo', 'animation', 'video',
@@ -358,6 +385,10 @@ def unwanted_mentions(message: types.Message):
else:
s['Messages'][message.from_user.id]['Count'] += 1
+ quote = stan.speak(20)
+ if quote:
+ bot.send_message(message.chat.id, quote)
+
@app.route(f"/bot{TOKEN}/", methods=['POST'])
def webhook():
diff --git a/app/config.py b/app/config.py
index a0dcb30..bd7ed10 100644
--- a/app/config.py
+++ b/app/config.py
@@ -17,3 +17,9 @@ ALLOWED_WORDS = ['paste', 'github', 'google', 'nometa', 'python', 'django', 'fla
WHITEUN = set(os.environ.get('whitelist', '<<?"""
+RUS_ENG_TABLE = str.maketrans(RUS, ENG)
+ENG_RUS_TABLE = str.maketrans(ENG, RUS)
diff --git a/app/stan.py b/app/stan.py
new file mode 100644
index 0000000..85e59bb
--- /dev/null
+++ b/app/stan.py
@@ -0,0 +1,10 @@
+""" Stan quote generator. """
+import random
+
+stan = [i.rstrip() for i in open('Stan.txt', 'r', encoding='utf8')]
+
+
+def speak(chance):
+ chance = random.randint(0, chance)
+ if chance == 0:
+ return random.choice(stan)