Допустим, пользователь хочет получить счёт, в котором написан товар, его цена и количество. В боте можно выбрать товар (каким угодно образом, сейчас это не очень важно), затем бот генерирует документ путём заполнения полей в шаблоне. Так? Тогда делим задачи на подзадачи и решаем: как и в каком порядке спрашивать у пользователя данные, какой формат использовать для документов, в каком виде шаблон итд итп.
wirflve, если передать в telethon "foobar", то он создаст сессию в файле "foobar.session". Реально это будет база данных формата sqlite. Соответственно, если ему подсунуть готовый файл, то он его использует.
Смотря что в этой HashMap. Если chat_id->state (то есть для каждого пользователя хранится текущее состояние и только), то достаточно одной таблицы.
Если же это именно стек (то есть пополняемый список состояний с возможностью возврата наверх), то так просто уже не получится. Например, так: сделать отдельную таблицу chat_id-state-seq, где seq - уникальное в пределах чата число, монотонно возрастающее в пределах chat_id (можно даже просто auto increment поле по всей таблице, ведь конкретные значения неважны, важно, что значение растёт). Тогда добавление в стек - добавление строки в таблицу, возврат наверх по стеку - удаление последней добавленной для chat_id строки. Можно по-прежнему хранить в тех же объектах, только загружать при старте бота данные, а также сопровождать добавление/удаление состояний в стеке операцией записью в базу, чтобы восстановиться в случае чего.
Лучше, конено, сделать это классом с соответствующим интерфейсом, который скроет детали реализации.
Нужно понимать, что у pyrogram основная идея в том, чтобы писать ботов в едином стиле как для Bot API, так и MTProto API. Полностью функциональность Телеграма он может и не покрывать.
Роман Анищенко, если нужно не дословное совпадение строки, то это к вопросу регулярных выражений. Их grep по умолчанию поддерживает довольно ограниченно. Чтобы было прям по-perl-овски - grep надо запускать с ключом -P.
Владислав Самойлов, вообще, автор скорее имел в виду другое, он не хочет скачанный файл сохранять на диск (ума не приложу почему, но тут часто такое спрашивают). Это тоже можно, надо содержимое файла загнать в переменную, а потом передать вместо файла BytesIO(содержимое_файла).
дмитрий шевченко, да, есть, и даже почти такая как указано, при условии, что на каждом отрезке между точками изменения знака косинуса используется своя константа. А не так как сейчас - константа одна на всём протяжении.
Нет, в Телеграме нельзя потоково передавать. Там аудио целиком загружается на сервер Телеграма, а потом пользователю прилетает сообщение с file_id. Далее пользовательский клиент скачивает файл по file_id.
Руслан, нет, получить нельзя, если текущее сообщение не является цитированием сообщения бота.
Более того, указанный способ получения id также является неправильным. И пользователь, и бот могли удалять свои сообщения, что собьёт счётчик. Кроме того, в API Телеграма формально не гарантируется ничего насчёт значений id. Они могут перестать быть последовательными числами и стать, например, случайными. Или, например, в рамках резервирования внутренней инфраструктуры Телеграма одна голова резерва будет возвращать чётные числа, а другая - нечётные.
Да, это возможно. Отправить файл из аккаунта пользователя и переслать сообщение боту, чтобы он получил его file_id. Заморочено, конечно, но это работает.
Multivarka, в рамках проверки на скриншоте он должен быть доступен онлайн. Вообще говоря, это правильно и должно только так и работать. Иначе можно было бы очень просто мешать ему работать, достаточно доступ к CRL заблокировать - и любой сертификат станет неотзываемым.
d3co9, авторизация в vk с паролем сейчас почти всегда вызывает показ капчи и отправку смс. Поэтому шансов на то, что конкретный скрипт её пройдёт мало. В конце концов, у скрипта наверняка не самый хороший User-Agent и IP, с точки зрения vk.
Надо через oauth2 получить токен пользователя и использовать его.