-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbot.py
114 lines (86 loc) · 5.49 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import logging
import telebot
from telebot import types
from __init__ import secrets
from main import get_tick
token = secrets.get('BOT_API_TOKEN')
bot = telebot.TeleBot(token)
logging.basicConfig(level=logging.INFO) # Настройка уровня логирования
while True:
# Функция для отправки сообщения с клавиатуры
def send_keyboard(message, text, keyboard):
logging.info(f'Отправка сообщения: {text}')
bot.send_message(message.chat.id, text, reply_markup=keyboard)
# Функция для обработки команды /start
@bot.message_handler(commands=['start'])
def start_message(message):
logging.info('Начало работы, активация команды /start')
keyboard = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button_info = types.KeyboardButton('Инфо')
button_actions = types.KeyboardButton('Акции')
# button_help = types.KeyboardButton('Помощь')
# button_currency = types.KeyboardButton('Валюта')
keyboard.add(button_info, button_actions)
send_keyboard(message, f'Привет, {message.from_user.first_name}', keyboard)
logging.info('Завершение обработки команды /start')
# Функция для обработки кнопки 'ИНФО'
@bot.message_handler(func=lambda message: message.text == 'Инфо')
def handle_info(message):
logging.info('Обработка кнопки Инфо')
send_keyboard(message,
'Я помогу тебе получить данные по стоимости акций с московской биржи и отобразить изменение стоимости во времени',
None)
logging.info('Завершение обработки кнопки Инфо')
# Функция для обработки кнопки 'Акции'
@bot.message_handler(func=lambda message: message.text == 'Акции')
def handle_actions(message):
logging.info('Handling Акции button')
send_keyboard(message, 'Какая акция интересует?\nПример команды:\nMOEX 4 недели\n\nВсе значения через пробелы',
None)
logging.info('Завершение обработки кнопки Акции')
# # Функция для обработки кнопки 'Помощь'
# @bot.message_handler(func=lambda message: message.text == 'Помощь')
# def handle_actions(message):
# logging.info('Handling Помощь button')
# send_keyboard(message, 'Парам-па-рам',
# None)
# logging.info('Завершение обработки кнопки Акции')
# # Функция для обработки кнопки 'Акции'
# @bot.message_handler(func=lambda message: message.text == 'Валюта')
# def handle_actions(message):
# logging.info('Handling Валюта button')
# send_keyboard(message, 'Какая валюта интересует?\nПример команды:\n*** * *\n\nВсе значения через пробелы',
# None)
# logging.info('Завершение обработки кнопки Валюта')
# Функция для обработки текста от пользователя
@bot.message_handler(func=lambda message: True)
def handle_get_tick(message):
logging.info('Инициализация обработки текстового сообщения')
try:
logging.info('Обработка сообщения пользователя')
chat_id = message.chat.id
text_info = message.text.split()
if len(text_info) > 1:
tick, interval, interval_name = str(text_info[0]).upper(), int(text_info[1]), str(text_info[2]).lower()
logging.info(f'Запрос пользователя: тикер={tick}, интервал={interval}, дни/недели={interval_name}')
img = get_tick(tick=tick, interval_name=interval_name, interval=interval)
logging.info('Отправка сообщения пользователю')
img.seek(0)
bot.send_photo(chat_id, img)
img.close()
elif len(text_info) == 1:
tick = text_info[0].upper()
logging.info(f'Запрос пользователя: тикер={tick}, интервал и дни/недели по-умолчанию')
img = get_tick(tick=tick)
logging.info('Отправка сообщения пользователю')
img.seek(0)
bot.send_photo(chat_id, img)
img.close()
else:
bot.send_message(chat_id, text='Неверный формат ввода. Убедитесь, что нет ошибки.')
logging.info(f'Завершение запроса пользователя: тикер={tick}, интервал={interval}, дни/недели={interval_name}')
logging.info('Запрос успешно обработан')
except Exception as e:
logging.error(f'Ошибка обработки запроса: {e}')
if __name__ == "__main__":
bot.polling(none_stop=True)