Не получается сохранять информацию о пользователях бота, использую Telebot - Python
Мне для дальнейшей работы нужно запустить бота, который создавал историю(лог) о пользователе. Написал что написал, но информация не сохраняется в (.xls), а выводится в терминал. Может есть код по типу этого но более короткий/удобный? Если есть лишнее время умоляю подправьте меня и помогите его дописать, за ранее огромное спасибо!
import telebot
from telebot import types
import xlsxwriter
import datetime as dt
count = 1
workbook = xlsxwriter.Workbook('message.xls')
worksheet = workbook.add_worksheet()
worksheet.write(0, 0, 'Дата')
worksheet.write(0, 1, 'Время')
worksheet.write(0, 2, 'Вид сообщения')
worksheet.write(0, 3, 'Отправитель')
worksheet.write(0, 4, 'ID отправителя')
worksheet.write(0, 5, 'Сообщения и id')
bot = telebot.TeleBot('XXXXXXXXXXXXXXXX')
@bot.message_handler(commands=['start'])
def button(message):
welcom = types.ReplyKeyboardMarkup(True, False)
knopka1 = types.KeyboardButton('Инструкция')
knopka2 = types.KeyboardButton('FAQ')
knopka3 = types.KeyboardButton('Предлагаемые услуги')
welcom.add(knopka1, knopka2, knopka3)
send = bot.send_message(message.chat.id,'Привет! Рады приветсвовать каждого кто зашел на нашь проект! Желаем удачно проведенного дня и хорошей сделки:)', reply_markup = welcom)
bot.register_next_step_handler(send, process_step)
def process_step(message):
if message.text == 'Инструкция':
instr = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
knopka4 = types.KeyboardButton('Назад')
instr.add(knopka4)
send = bot.send_message(message.chat.id, 'Это инструция для чайников!', reply_markup = instr)
bot.register_next_step_handler(send)
@bot.message_handler(content_types =['text'])
def send_text(message):
print(message)
global count
if message.content_type == 'text':
if message.text != '':
worksheet.write(count, 0, str(dt.datetime.now().date()))
worksheet.write(count, 1, str(dt.datetime.now().time())[0:8])
worksheet.write(count, 2, 'текст')
worksheet.write(count, 3, str(message.from_user.first_name) + str(message.from_user.last_name))
worksheet.write(count, 4, message.from_user.id)
worksheet.write(count, 5, message.text)
count += 1
else:
workbook.close()
bot.polling(non_stop=True)
Ответы (1 шт):
Автор решения: dsaadsdas
→ Ссылка
import telebot
from telebot import types
import pandas as pd
import datetime as dt
bot = telebot.TeleBot('XXXXXXXXXXXXXXXX')
columns = ['Дата', 'Время', 'Вид сообщения', 'Отправитель', 'ID отправителя', 'Сообщения и id']
data = []
@bot.message_handler(commands=['start'])
def button(message):
welcom = types.ReplyKeyboardMarkup(True, False)
knopka1 = types.KeyboardButton('Инструкция')
knopka2 = types.KeyboardButton('FAQ')
knopka3 = types.KeyboardButton('Предлагаемые услуги')
welcom.add(knopka1, knopka2, knopka3)
send = bot.send_message(message.chat.id,
'Привет! Рады приветсвовать каждого, кто зашел на наш проект!' +
'Желаем удачно проведенного дня и хорошей сделки:)', reply_markup=welcom)
bot.register_next_step_handler(send, process_step)
def process_step(message):
if message.text == 'Инструкция':
instr = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
knopka4 = types.KeyboardButton('Назад')
# Добавляем информацию в массив данных
current_time = dt.datetime.now()
data.append([current_time.date(), current_time.time(), 'Тип сообщения',
message.from_user.username, message.from_user.id, message.text])
# Создаем DataFrame из данных и записываем в Excel
df = pd.DataFrame(data, columns=columns)
df.to_excel('messages.xlsx', index=False)