75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
import os
|
||
import asyncio
|
||
import logging
|
||
from datetime import datetime
|
||
|
||
|
||
from aiogram import Bot, Dispatcher, types
|
||
from aiogram.enums.dice_emoji import DiceEmoji
|
||
from aiogram.filters.command import Command
|
||
from config_reader import config
|
||
|
||
# Включаем логирование, чтобы не пропустить важные сообщения
|
||
logging.basicConfig(level=logging.INFO)
|
||
|
||
# Для записей с типом Secret* необходимо
|
||
# вызывать метод get_secret_value(),
|
||
# чтобы получить настоящее содержимое вместо '*******'
|
||
bot = Bot(token=config.bot_token.get_secret_value())
|
||
|
||
# Объект бота напрямую из .env
|
||
# bot = Bot(token=os.getenv("BOT_TOKEN"))
|
||
|
||
# Диспетчер
|
||
dp = Dispatcher()
|
||
dp["started_at"] = datetime.now().strftime("%Y-%m-%d %H:%M")
|
||
|
||
# Хэндлер на команду /start
|
||
@dp.message(Command("start"))
|
||
async def cmd_start(message: types.Message):
|
||
await message.answer("Привет!")
|
||
|
||
# Хэндлер на команду /test1
|
||
@dp.message(Command("test1"))
|
||
async def cmd_test1(message: types.Message):
|
||
await message.reply("Test 1")
|
||
|
||
# Хэндлер на команду /test2
|
||
# Без декоратора, т.к. регистрируется ниже в функции main()
|
||
async def cmd_test2(message: types.Message):
|
||
await message.reply("Test 2")
|
||
|
||
|
||
@dp.message(Command("answer"))
|
||
async def cmd_answer(message: types.Message):
|
||
await message.answer("Это простой ответ")
|
||
|
||
|
||
@dp.message(Command("reply"))
|
||
async def cmd_reply(message: types.Message):
|
||
await message.reply('Это ответ с "ответом"')
|
||
|
||
|
||
@dp.message(Command("dice"))
|
||
async def cmd_dice(message: types.Message):
|
||
await message.answer_dice(emoji=DiceEmoji.DICE)
|
||
|
||
# передача сообщения в другой чат с номером чата -1001826767638
|
||
@dp.message(Command("dice2"))
|
||
async def cmd_dice2(message: types.Message, bot: Bot):
|
||
await bot.send_dice(-1001826767638, emoji=DiceEmoji.DICE)
|
||
|
||
# запрос даты запуска бота
|
||
@dp.message(Command("info"))
|
||
async def cmd_info(message: types.Message, started_at: str):
|
||
await message.answer(f"Бот запущен {started_at}")
|
||
|
||
# Запуск процесса поллинга новых апдейтов
|
||
async def main():
|
||
# Регистрируем хэндлер cmd_test2 по команде /start
|
||
dp.message.register(cmd_test2, Command("test2"))
|
||
# Запускаем бота
|
||
await dp.start_polling(bot)
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(main()) |