-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbot.py
More file actions
49 lines (41 loc) · 2.17 KB
/
bot.py
File metadata and controls
49 lines (41 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 1.Импорт библиотек
import logging
import os
from aiogram import Bot, Dispatcher
from aiogram.types import Message # ловим все обновления этого типа
from aiogram.filters.command import Command # обрабатываем команды /start, /help и другие
from transliterate import translit
# 2. Инициализация объектов
TOKEN = os.getenv('TOKEN')
bot = Bot(token=TOKEN) # Создаем объект бота
dp = Dispatcher() # Создаем объект диспетчера. Все хэндлеры(обработчики) должны быть подключены к диспетчеру
logging.basicConfig(level=logging.INFO, filename="py_log.log",filemode="w",
format="%(asctime)s %(levelname)s %(message)s")
# Домашнее Задание
# - Включить запись log в файл
# - Бот принимает кириллицу отдаёт латиницу в соответствии с Приказом МИД по транслитерации
# - Бот работает из-под docker контейнера
# 3. Обработка/Хэндлер на команду /start
@dp.message(Command(commands=['start']))
async def proccess_command_start(message: Message):
user_name = message.from_user.full_name
user_id = message.from_user.id
text = f'Привет, {translit(user_name,reversed=True)}!'
logging.info(f'{user_name} {user_id} запустил бота')
await bot.send_message(chat_id=user_id, text=text)
# 4. Обработка/Хэндлер на любые сообщения
@dp.message()
async def send_echo(message: Message):
user_name = message.from_user.full_name
user_id = message.from_user.id
def translitik(slovo):
try:
return translit(slovo, reversed=True)
except:
return slovo
text=translitik(message.text)
logging.info(f'{user_name} {user_id}: {text}')
await message.answer(text=text)
# 5. Запуск процесса пуллинга
if __name__ == '__main__':
dp.run_polling(bot)