def graph(variables):
for i in range(8):
y = variables[0]
k = variables[4]
x = variables[8]
plt.figure()
plt.axis([-10, 10, -10, 10])
plt.grid(True)
plt.plot((x, -x), (y, -y))
plt.plot([x, -x], [y, -y], 'ro')
plt.plot((0, 0), (10, -10), color='#ff7f0e')
plt.plot((-10, 10), (0, 0), color='#ff7f0e')
plt.ylabel('Линейная функция')
plt.show()
plt.savefig('мой график')
return plt
bot.send_message(message.from_user.id, 'Введи данные в формате >> y = k * x. Например - (5 = 1 * 5)')
bot.register_next_step_handler(message, graph) #Полученное сообщение в формате <class 'NoneType'>, Как его преобразовать в int?
y = variables[0]
TypeError: 'Message' object is not subscriptable
import telebot
from matplotlib import pyplot as plt
import numpy as np
from io import BytesIO
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands = ['graph'])
def plot_graph(message):
msg = bot.send_message(message.chat.id, 'Введи k для линейной функции >> y = k * x')
# направляем в процедуру формирования графика, использующую k из текста
bot.register_next_step_handler(msg, graph)
def graph(message):
k = int(message.text)
x = np.arange(-10.0, 10.0, 0.01)
y = k * x
# формируем график
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set(xlabel='x', ylabel='y', title='Линейная функция')
ax.grid()
# сохраняем результат (картинку графика) в двоичном потоке, который потом отсылаем в чат
fp = BytesIO()
fig.savefig(fp, format='png')
fp.seek(0)
bot.send_photo(message.chat.id, fp)