AttributeError: 'Message' object has no attribute 'answer_document'
Необходимо, чтобы бот присылал файл excel, однако пишет эту ошибку. Путь к файлу указан верно, никак не пойму в чём ошибка.
async def telegram_channel_parser(message: types.Message):
async with TelegramClient('session', api_id, api_hash) as client:
all_message = client.iter_messages(message, reverse=True, offset_date=date)
name_of_file = str(message.split('/')[-1])
async for message in all_message:
msg.append(message.message)
df = pd.DataFrame({'Содержание публикации': [title for title in msg]})
with pd.ExcelWriter(f"{name_of_file}_channel_tg.xlsx", engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name=f"{name_of_file}", index=False)
worksheet_paimon = writer.sheets[f"{name_of_file}"]
worksheet_paimon.set_column('A:B', 280)
await message.answer_document(open(f'{name_of_file}_channel_tg.xlsx', 'rb'))
Стоит отметить, что вот так, отправляется всё, но не от лица бота, а от лица клиента. Как сделать наоборот?
await client.send_file('@Bot', f'{name_of_file}_channel_tg.xlsx')
Ответы (1 шт):
Автор решения: cool rage
→ Ссылка
answer_document лучше заменить на send_document или reply_document
Если это то о чем я подумал.
Несколько ошибок в:
name_of_file = str(message.split('/')[-1]),df = pd.DataFrame({'Содержание публикации': [title for title in msg]})await message.answer_document(open(f'{name_of_file}_channel_tg.xlsx', 'rb'))
async def telegram_channel_parser(message: types.Message):
# устанавливаем соединение с клиентом Telegram
async with TelegramClient('session', api_id, api_hash) as client:
# получаем все сообщения из чата, начиная с указанной даты
all_message = client.iter_messages(message, reverse=True, offset_date=date)
# получаем имя файла из текста сообщения
name_of_file = str(message.text.split('/')[-1])
# создаем список для хранения текста сообщений
msg = []
# получаем текст каждого сообщения и добавляем его в список
async for message in all_message:
msg.append(message.message)
# создаем DataFrame из списка сообщений
df = pd.DataFrame({'Содержание публикации': [title for title in msg]})
# записываем DataFrame в файл Excel
with pd.ExcelWriter(f"{name_of_file}_channel_tg.xlsx", engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name=f"{name_of_file}", index=False)
# устанавливаем ширину столбцов в Excel
worksheet_paimon = writer.sheets[f"{name_of_file}"]
worksheet_paimon.set_column('A:B', 280)
# отправляем файл Excel обратно в чат
await message.reply_document(open(f'{name_of_file}_channel_tg.xlsx', 'rb'))
Если не получится, копай в направлении inputfile и io.BytesIO
@app.on_message()
async def handler(client, message):
# открываем файл и создаем InputFile
with open(f'{name_of_file}_channel_tg.xlsx', 'rb') as f:
document = io.BytesIO(f.read())
document.name = f'{name_of_file}_channel_tg.xlsx'
# отправляем документ в чат
await client.send_document(message.chat.id, document)
И последний момент, если ты хочешь отправлять от имени бота, используй метод:
await bot.send_document(message.chat.id, open(f'{name_of_file}_channel_tg.xlsx', 'rb'))