Не получается сохранять информацию о пользователях бота, использую Telebot - Python

Рейтинг: 0Ответов: 1Опубликовано: 19.01.2023

Мне для дальнейшей работы нужно запустить бота, который создавал историю(лог) о пользователе. Написал что написал, но информация не сохраняется в (.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)

Ответы

▲ 0
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)