from aiogram import F, Router
from aiogram.filters import Command, CommandStart
from aiogram.types import CallbackQuery, FSInputFile, InlineKeyboardButton, InlineKeyboardMarkup, Message
from .common import count, in_group
import db
router = Router()
ABOUT = ('- Этот АБОБОТ поможет вам приятно провести время в чате с различными командами, '
'ивентами и удобными функциями, которые облегчают использование чата)\n\n'
'- Также прошу если вам понравился бот, оставить отзыв о его использовании на '
'команду /report)')
@router.message(CommandStart())
@router.message(Command('help'))
async def helps(message: Message):
await db.ensure_user(message.from_user.id)
if in_group(message):
await count(message, 3, 1)
keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text="КОМАНДЫ", callback_data="com"),
InlineKeyboardButton(text="ИВЕНТЫ", callback_data="even")],
[InlineKeyboardButton(text="АВТОР", callback_data="auth"),
InlineKeyboardButton(text="ФУНКЦИИ", callback_data="fun")]
])
try:
await message.answer_voice(voice=FSInputFile('../data/tts.ogg'), caption=ABOUT, reply_markup=keyboard)
except Exception:
await message.answer(ABOUT, reply_markup=keyboard)
@router.callback_query(F.data == "auth")
async def author(call: CallbackQuery):
await call.message.answer(
'| АВТОР |\n\n>> Этот бот, как бы это не печально звучало, но одна из лучших'
' моих работ и если кого-нибудь у меня получится действительно достойный продукт,'
' вы сможете о нём узнать в моём телеграм канале @programium')
@router.callback_query(F.data == "fun")
async def function(call: CallbackQuery):
await call.message.answer(
'| ФУНКЦИИ |\n\n1. Возможность перевода случайно написанного текста на '
'транслите\n2. Ведение обширной статистики сообщений\n3. Упоминание участника '
'при написании его имени в чате\n4. Автоматическое удаление системных сообщений')
@router.callback_query(F.data == "com")
async def commands(call: CallbackQuery):
await call.message.answer(
'| КОМАНДЫ |\n\n/all - упомянуть всех в чате\n/help - полный список функций\n'
'/recognize - транскрипция отмеченного голосового сообщения в текст\n'
'/stat_group - полная статистика группы\n/stat_user - полная статистика '
'отправителя\n/top - самые активные участники (/top all - за всё время)\n'
'/month - итоги месяца (/month 2026-09 - за любой месяц)\n'
'/edit и /back_edit - первая команда даёт возможность '
'сменить имя для упоминаний на любое слово, а вторая для возврата динамического '
'имени\n/settings - настройки бота в чате\n'
'/start_bot и /stop_bot - возможность отключения текстовых ивентов')
@router.callback_query(F.data == "even")
async def events(call: CallbackQuery):
await call.message.answer(
'| ИВЕНТЫ |\n\n"Чмокнуть" - сделать кому-нибудь приятно\n"Отмудохать" - '
'выместить злость на кого-нибудь\n"Число от ... до ..." - случайное значение из '
'диапозона\n"Подраться с ..." - повод кого-нибудь побить\n"Переведи (..) - ..." '
'- перевод слова на керпичный язык\n"Дай блять совет!" - даёт рандомный охуенный '
'совет\n"Переверни - ..." - переворачивает слова в предложении\n"Озвучь - ..." '
'- озвучивает написанный текст')