-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbot.py
46 lines (33 loc) · 1.7 KB
/
bot.py
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
from aiogram import Bot, Dispatcher, types
import asyncio
#from os import getenv, environ
import telebot
from main import aggregate_data
from aiogram.filters import CommandStart
import json
#-------
# Setting up the Telegram bot using a provided token.
BOT_TOKEN = "confidential"
bot = Bot(BOT_TOKEN)
dispatch = Dispatcher()
#-------
# Function for the '/start' command.
@dispatch.message(CommandStart())
async def start(message: types.Message):
user_name = message.from_user.first_name
user_name += ' '
user_name += message.from_user.last_name
await message.answer(f"Добро пожаловать, {user_name}. Этот бот принимает от пользователей текстовые сообщения содержащие JSON с входными данными для агрегации статистических данных о зарплатах сотрудников компании по временным промежуткам, и возвращает агрегированные данные в ответ.")
@dispatch.message()
async def get_message(input: types.Message):
inputs = json.loads(input.text) # Extracting JSON data from incoming messages, extracting parameters, aggregating data, and sending back the results.
dt_from = inputs['dt_from']
dt_upto = inputs['dt_upto']
group_type = inputs['group_type']
answer = await aggregate_data(dt_from,dt_upto,group_type)
await input.answer(str(answer).replace("'", '"'))
# Starting the bot and handling message polling asynchronously.
async def main():
await dispatch.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())