Как стать автором
Обновить

Комментарии 20

Пхахахах спасибо, упустил из вида

import telebot

Зачем масса людей выбирает эту библиотеку? Есть же aiogram или PTB.

При большом количестве пользователей бот будет падать постоянно и дико тормозить. Telebot - это для маленьких задач, для обучения, для ознакомления.

Так вот обучаемся как раз) Спасибо за библиотеки, учтём и рассмотрим

Для старта telebot отлично подходит. Лично мне было проще с ней разобраться. Плюс новичков может пугать async/await в aiogram. Документации и там и там не особо много, чтобы понять многие вещи, приходилось шариться по исходникам, смотреть как работает все под капотом. Так вот внутрянка telebot более понятная что-ли. В любом случае это мой личный опыт. Кому-то может сразу aiogram зайдет.

В чем смысл использовать в этой задаче excel вместо текстового файла?

думается мне это из разряда "сверху сказали так, а я и не спорю"

 (такое извращение нужно для подготовки к будущему проекту)

А зачем хранить в *.XLC, тянуть какую-то стороннюю библиотеку для работы с этими файлами?
можно же было все это либо в CSV хранить и редактировать в том же Exel (при этом работая со встроенной библиотекой csv), либо простенькую SQLite базу создать и также с ней работать.
UPD: коммент долго был на модерации.

В функции callback_inline много повторяющегося. Попробуйте создать словарь, где ключами будут значения в callback_data ваших кнопок, а значениями — пути к соответствующим файлам.

А если еще глубже обдумать этот момент, то в самой документации к апишке телего-ботов сказано, что файлы лучше загружать единожды, а в следующие разы обращаться уже к ID этих файлов. А у вас сейчас каждый раз отправляются файлы на сервера телеги.

Решения действительно стоящие, благодарю. А файлы в формате .XLC нужны из-за будущего проекта, так как в них много информации сейчас хранится (в универе)

Тогда можно попробовать второй лист xls файла отвести под хранение ID загруженных файлов. И сначала искать там, и если не найдутся — отправлять непосредственно файл.

Но небольшой нюанс. Если создать нового бота и попытаться использовать в нем те же ID файлов — ничего не выйдет. ID файлов существуют в области видимости одного бота.
Добавлю немного.
Выбирать информацию из эксель обычно быстрее всего по ADO.
Читать каждый раз файл при команде не стоит. Это узкое место, где можно получить блокировки, когда будет много параллельных чатов. Напрашивается кэш в памяти.
Наличие цикла при выборе цитаты похоже на логическую ошибку. Кажется, там достаточно сгенерить случайный номер строки из диапазона и прочитать цитату по индексу — цикла не надо.

Если планируется массовое использование/обработка xls, то советую обратить внимание на pandas. Там много функций для обработки табличных данных.

Благодраю

Офигеть. Спасибо. Как раз искал как подружить эксель и Телеграм.

У меня несколько вопросов к Вам:

  • Вы указали, что экселевский файл хранится где-то "у Вас на компьютере", а что если файл хранится на sharepoint'e с доступом по логину\паролю?

  • А что если у меня несколько столбцов вида:

  |  A    | B     |   C    |   D   |   C   |     D  |   E    |
--+-------+-------+--------+-------+-------+--------+--------+
1 |                 Week 2  	                               |
--+-------+-------+--------+-------+-------+--------+--------+
2 | 19-Jul| 20-Jul| 21-Jul | 22-Jul| 23-Jul| 24-Jul | 25-Jul |
--+-------+-------+--------+-------+-------+--------+--------+
3 |  Mon  |  Tue  |  Wed   | Thu   | Fri   | Sat    | Sun    |
--+-------+-------+--------+-------+-------+--------+--------+

И мне нужно показать цитату за текущую дату, например за 19 июля?

  1. С Sharepoint в Python работать не приходилось, но может поможет данная статья

  2. Как вариант можем сделать импорт from xlrd import cellname И использовать команду sheet.cell_value(rowx,colx) для извлечения значений ячеек. Видим, что даты у нас находятся с ячейки А2, значит начинаем обычное текстовое сравнение нашей даты с rowx=1, colx=0. С помочью счётчика colx увеличиваем на 1, пока не найдётся нужная дата. Считать до range(sheet.ncols). Это как вариант что первое в голову пришло, уверен, можно лучше реализовать.

Спасибо. Попробую :)

а) Если статья не о политике, то я посоветовал бы вообще её не упоминать. Это выглядит как "Ало, я в Нижневартовске, всё, мне некогда говорить, пока". Вот мне тоже очень хочется сказать, что ваша [ДАННЫЕ МНОГОКРАТНО УДАЛЕНЫ].

б) Вне зависимости ни от чего, использовать xls в 2021 году в новом проекте - зло. Вы хоть в xlsx сконвертьте, что ли. Фраза "так уже сделано" - не оправдание.

в) Код достаточно грязный, хоть и напоминает что-то рабочее.

г) > обучаемся как раз
Не надо вовлекать в своё начальное обучение сообщество. Вам нечего сказать, хабр - не твиттер и даже не мастодон.

д) "Для полноценного бота необходим хостинг" = "код не работает(".
"Что, как правило, платно" = "мы не можем поднять виртуалку за копейки(".

А зачем нужна строчка:

if message.chat.type == 'private'

она говорит о том, что весь код, который входит под эту строку будет работать когда боту пишут в личные сообщения. Так же есть типы “group”, “supergroup” и “channel”

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории