Как сделать, чтобы телеграм-бот отвечал уже вычисленным числом с процентами?
Как сделать, чтобы бот умел высчитывать проценты от суммы самостоятельно, без участия хозяина? Например, пользователь хочет узнать, какая будет сумма, если к 567 прибавить 12℅. Пример ниже показывает, что я хочу сделать, но никак не могу понять.
Пользователь пишет: 678
Бот отвечает уже рассчитанной суммой: 759,36
Как научить бота вычислять процент? Подскажите, пожалуйста, кто знает.
Простой 1 комментарий
Вам ничего в вопросе странным не показалось? 😉
В этом возрасте сложно кого-нибудь нанимать. Обычно потому, что денег нет =)
Rsa97, когда мне было 10 лет, интернетов в народе еще не было. А бейсик был. И я им довольно плотно занимался.
Самым крутым достижением был псевдографический редактор. Программа позволяла перемещать курсор, и ставить псевдосимволы в позицию курсора. Это было очень круто. Круче, чем BomBibom, стеклянные шарики и даже карманный тетрис.
Несмотря на увлечение бейсиком, культура и уровень развития вполне соответствовал возрасту. Помните себя в 10? =)
Возможно, коллега из третьего или четвертого класса. По стилистике, очень похоже.
Семь «секретных» фишек Telegram, которыми я пользуюсь каждый день
Меню отправки: сообщение без звука и отложенное сообщение
Большая часть моего общения в Telegram — это деловая переписка. И именно в ней мне особенно бывает полезна пара возможностей, о которых я сейчас расскажу.
Если при отправке сообщения задержать палец на кнопке «отправить» (на ПК и Mac — правый клик), то появится всплывающее меню с двумя пунктами: «Отправить без звука» и «Отправить позже».
В первом случае сообщение будет сразу же доставлено адресату — уведомление о нем появится на смартфоне, однако звукового и тактильного сигнала не будет. Я, например, всегда использую эту функцию, если отправляю рабочие сообщения кому-то после 22:00 и считаю это правилом хорошего тона. Вдруг человек уже отдыхает, но забыл активировать режим «Не беспокоить», а вы его так побеспокоите. В то же время, если контакт готов прямо сейчас вам ответить, он это сделает, увидев уведомление на локскрине.
«Отправить позже» — это отложенное сообщение, которое придет адресату в строго заданные день и время. Мы с коллегами, например, постоянно ставим друг другу такие напоминалки о каких-то важных делах в будущем, про которые нельзя забыть. Или, нередко работая над чем-то ночью, отправляем команде что-то на «посмотреть с утра». Кстати, при отложенном сообщении в указанный момент времени вы также получаете подтверждение, что вот, мол, вы хотели отправить это сообщение в этот момент времени, и оно было отправлено.
Кстати, если отправить отложенное сообщение себе в «Избранное», то оно сработает как напоминание. Тоже невероятно удобная вещь, чтобы о чем-то себе напомнить в заданный день и время.
Пометить как новое / непрочитанное
Нередко бывает, что приходит важное сообщение, я его читаю, но вернуться к нему требуется через некоторое время. Чтобы про него не забыть, я пользуюсь функцией «Пометить как новое». В этом случае напротив диалога будет отображаться стикер нового сообщения, который будет продолжать мозолить глаза.
Найти искомую кнопку на смартфоне можно двумя способами: долгим тапом по диалогу или свайпом по диалогу слева-направо. На десктоп-клиентах она находится в контекстном меню по правому клику на диалоге.
Прочитать сообщение так, чтобы собеседник об этом не узнал
В Telegram не предусмотрена функция сокрытия от всех или отдельных контактов факта прочтения сообщения — если вы откроете диалог и просмотрите месседж, то на стороне отправителя это сообщение будет отмечено двойной галочкой. Но в случае с мобильными клиентами Telegram есть один лайфхак, который все же позволяет это провернуть.
В этом поможет предпросмотр, который активируется по долгому тапу на диалоге. Все просто: задерживаете палец на нужном диалоге и ждете появления всплывающего окна с предпросмотром. В окне предпросмотра можно прочитать все новые сообщения, и при этом адресат не узнает, что вы заходили в диалог. Бывает очень удобно!
Telegram хранит все подряд, поэтому стоит настроить лимиты кэша
Одна из особенностей Telegram — это безлимитное хранилище файлов. Мессенджер хранит на своих серверах абсолютно весь контент в чатах, каналах, личных сообщениях — даже спустя годы вы можете посмотреть, какими файлами вы обменивались с теми или иными людьми. Единственное ограничение — это лимит в 2 ГБ на один файл (раньше было 1,5 ГБ).
Но в то же время Telegram способен стремительно забивать кэшем этого контента внутреннее хранилище смартфона. В моем случае за полгода использования последнего смартфона мессенджер «сожрал» порядка 10 ГБ. Для смартфона с 512 ГБ памяти не критично, но для обладателей аппаратов с 32-64 ГБ на борту — объем внушительный. Поэтому я рекомендую перейти по пути Настройки — Данные и память — Использование памяти и выставить лимиты по времени хранения, занимаемому объему или скомбинировать оба этих параметра. Здесь же нажатием одной кнопки можно очистить кэш единоразово.
Быстрое выделение сразу нескольких сообщений
Это эксклюзивная фишка iOS-клиента Telegram, поэтому Android-пользователи могут с чистой совестью пропустить этот пункт. Если вы хотите выделить сразу несколько сообщений для пересылки или удаления, то просто проведите по ним двумя пальцами одновременно сверху-вниз или снизу-вверх. Просто и понятно!
Быстрый ответ свайпом
Еще одна простая и совсем не эксклюзивная фишка Telegram, но о ней знают далеко не все. Чтобы ответить на конкретное сообщение в диалоге или чате, достаточно просто свайпнуть по нему справа-налево. Работает в мобильных клиентах.
В архив и без уведомлений
Это одна из самых полезных фишек Telegram, появившихся за последнее время. Она позволяет автоматически отправлять все новые чаты с незнакомыми людьми в архив и так же автоматически заглушать от них уведомления.
В связи с моим родом деятельности, незнакомцев мне пишет предостаточно, однако лишь малая часть из них пишет по делу. Да и вообще, учитывая мой объем коммуникации в Telegram, я стараюсь максимально выборочно фильтровать те чаты, диалоги и каналы, от которых мне приходят уведомления — иначе можно просто свихнуться, занимаясь не делами, а реагируя на каждое уведомление в любимом мессенджере.
Так вот автоматическая архивация и «обезоруживание» в плане уведомлений всех новых диалогов — это просто спасение. В архив я и так захожу по несколько раз день, в основном прочитать «замьюченные» каналы. И в эти же моменты разгребаю все новые переписки: одни извлекаю из архива и включаю им уведомления, на другие просто отвечаю и оставляю здесь, сообщения же от неадекватных «друзей» сразу удаляю с последующим баном. Очень удобно!
Функция появится в том случае, если пользователю действительно много кто пишет. Найти кнопку «В архив и без уведомлений» можно по пути Настройки — Конфиденциальность — Новые чаты с незнакомцами. Пользуйтесь на здоровье!
Предлагаю вам продолжить этот список в комментариях. Делитесь своими любимыми и неочевидными фишками Telegram, и если действительно интересных наберется еще на один материал — я непременно его сделаю!
Какие числа называются целыми
Определение целых чисел
Что важно знать о целых числах:
Целые числа на числовой оси выглядят так:
На координатной прямой начало отсчета всегда начинается с точки 0. Слева находятся все отрицательные целые числа, справа — положительные. Каждой точке соответствует единственное целое число.
В любую точку прямой, координатой которой является целое число, можно попасть, если отложить от начала координат данное количество единичных отрезков.
Натуральные числа — это целые, положительные числа, которые мы используем для подсчета. Вот они: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 + ∞.
Целые числа — это расширенное множество натуральных чисел, которое можно получить, если добавить к ним нуль и отрицательные числа. Множество целых чисел обозначают Z.
Выглядит эти ребята вот так:
Последовательность целых чисел можно записать так:
Свойства целых чисел
Таблица содержит основные свойства сложения и умножения для любых целых a, b и c:
Урок 4. Платежи в Telegram
В этом уроке мы максимально подробно разберем платежи в Telegram
Урок будет достаточно объемным, полный листинг программы как и всегда доступен на GitHub
Как принимать платежи?
Важно! Токен привязывается к боту, поэтому для подключения даже тестовых платежей к другому боту, процедуру, описанную выше, придется повторить.
Для начала создадим самого простого бота, который принимает платежи, чтобы понять основу.
После стандартных импортов делаем кое-что новое, а именно:
Теперь переходим к объявлению цены. Так как в минимальном примере она у нас будет одна, записываем следующее:
Далее создаем обычный хэндлер команд:
И переходим к написанию самой логики платежей.
Отправляем счёт для оплаты
Распознаем команду, по которой будем присылать квитанцию:
И затем в этом же хэндлере высылаем сам счет:
Что же там произошло? Объясняю (до параметра currency всё и так понятно):
Ну что ж! С самым сложным разобрались! Запрашиваем квитанцию, заходим со смартфона (на десктопе платежи до сих пор не поддерживаются) и нажимаем на единственную кнопку под сообщением (она добавляется автоматически, если мы не передаем никакую клавиатуру к сообщению, в ином случае мы обязаны сделать первую кнопку «платежной», а остальные как обычно) и переходим к оплате:
Как мы видим, телеграм сам ставит разделитель копеек.
Нажимаем Payment Method и вводим данные карточки. Номер, как нам уже подсказал бот, это повторяющиеся 42, срок действия нужно указать валидный (больше текущей даты). Затем набираем трехзначный CVC и нажимаем «Заплатить» / «Pay».
Как ни странно, в этот момент оплата ещё совершена не будет, мы вернемся к предыдущему экрану, куда добавится информация о нашей платежной карточке.
Для того, чтобы обработать оплату в данном примере, нам понадобится ещё два хэндлера:
Для наглядности на строчках 58-61 я сделал печать интересующих нас параметров в формате ключ = значение :
Только что мы рассмотрели самый простой пример приема платежей в Telegram
Полный листинг этого примера доступен по ссылке
Дополнительные информационные поля, валидация данных перед платежом
Только что мы разобрали принцип получения платежей в Telegram. Теперь перейдем к более сложной части. Этот пример проведем в отдельном файле.
Начнем с изменения первой же цены. Запишем:
Теперь в оплату у нас помимо Машины Времени входит ещё и подарочная упаковка, которую нельзя убрать.
Затем на строках 29-45 объявляем возможные способы доставки.
Об их применении чуть позже, сейчас добавим стандартные хэндлеры:
И отправляем счёт по команде /buy :
Разберем добавившиеся параметры:
В документации приведена ещё пара необзательных параметров, касающихся платежей:
Ну что ж. Мы получили инвойс, открываем его и заполняем.
При сохранении адреса будет отправлен апдейт, ловим его и обрабатываем:
Ладно, выберем, например, Зимбабве, а ещё заполним поля, требующие номер телефона и почту:
Выглянув в окно и убедившись, что мы всё таки не в Зимбабве, выставляем страну Россия, ну и укажем город Москва. Программа проверит это и добавит нужные опции в массив. Таким образом мы получим уже три варианта доставки:
Смотрите ещё что. В вариант отправки Почтой России мы добавили два обязательных параметра: это Деревянный ящик с амортизирующей подвеской внутри и Срочное отправление (5-10 дней), стоимость этих пунктов добавляется в квитанцию.
Нажимаем кнопку «Pay», но оплата у нас не пройдет: не забыли, что нам необходимо ещё подтвердить платеж? Создаем следующий хэндлер:
Теперь для интереса (чтобы вариант «Самовывоз» пропал) сменим адрес на не Москву
Ну и, исправив почту, мы таки выполняем платеж:
И ещё: при каждом выборе адреса доставки мы печатали этот самый адрес. А при попытке оплатить печатали информацию по заказу. Взглянем же на распечатанное:
Эти данны мы можем использовать для дальнейшей обработки заказа, но это уже история совсем не про Telegram Bot API.
На этом урок по платежам подошел к концу
В качестве домашнего задания попробуйте добавить больше фильтров валидации к своему платежу
Простой Telegram-бот на Python за 30 минут
На Хабре, да и не только, про ботов рассказано уже так много, что даже слишком. Но заинтересовавшись пару недель назад данной темой, найти нормальный материал у меня так и не вышло: все статьи были либо для совсем чайников и ограничивались отправкой сообщения в ответ на сообщение пользователя, либо были неактуальны. Это и подтолкнуло меня на написание статьи, которая бы объяснила такому же новичку, как я, как написать и запустить более-менее осмысленного бота (с возможностью расширения функциональности).
Часть 1: Регистрация бота
Самая простая и описанная часть. Очень коротко: нужно найти бота @BotFather, написать ему /start, или /newbot, заполнить поля, которые он спросит (название бота и его короткое имя), и получить сообщение с токеном бота и ссылкой на документацию. Токен нужно сохранить, желательно надёжно, так как это единственный ключ для авторизации бота и взаимодействия с ним.
Часть 2: Подготовка к написанию кода
Как уже было сказано в заголовке, писать бота мы будем на Python’е. В данной статье будет описана работа с библиотекой PyTelegramBotAPI (Telebot). Если у вас не установлен Python, то сперва нужно сделать это: в терминале Linux нужно ввести
После, в терминале Linux, или командной строке Windows вводим
Теперь все готово для написания кода.
Часть 3: Получаем сообщения и говорим «Привет»
Небольшое отступление. Телеграмм умеет сообщать боту о действиях пользователя двумя способами: через ответ на запрос сервера (Long Poll), и через Webhook, когда сервер Телеграмма сам присылает сообщение о том, что кто-то написал боту. Второй способ явно выглядит лучше, но требует выделенного IP-адреса, и установленного SSL на сервере. В этой статье я хочу рассказать о написании бота, а не настройке сервера, поэтому пользоваться мы будем Long Poll’ом.
Открывайте ваш любимый текстовый редактор, и давайте писать код бота!
Первое, что нужно сделать это импортировать нашу библиотеку и подключить токен бота:
Теперь объявим метод для получения текстовых сообщений:
В этом участке кода мы объявили слушателя для текстовых сообщений и метод их обработки. Поле content_types может принимать разные значения, и не только одно, например
Будет реагировать на текстовые сообщения, документы и аудио. Более подробно можно почитать в официальной документации
Теперь добавим в наш метод немного функционала: если пользователь напишет нам «Привет», то скажем ему «Привет, чем я могу помочь?», а если нам напишут команду «/help», то скажем пользователю написать «Привет»:
Данный участок кода не требует комментариев, как мне кажется. Теперь нужно добавить в наш код только одну строчку (вне всех методов).
Теперь наш бот будет постоянно спрашивать у сервера Телеграмма «Мне кто-нибудь написал?», и если мы напишем нашему боту, то Телеграмм передаст ему наше сообщение. Сохраняем весь файл, и пишем в консоли
Где bot.py – имя нашего файла.
Теперь можно написать боту и посмотреть на результат:
Часть 4: Кнопки и ветки сообщений
Отправлять сообщения это несомненно весело, но ещё веселее вести с пользователем диалог: задавать ему вопросы и получать на них ответы. Допустим, теперь наш бот будет спрашивать у пользователя по очереди его имя, фамилию и возраст. Для этого мы будем использовать метод register_next_step_handler бота:
И так, данные пользователя мы записали. В этом примере показан очень упрощённый пример, по хорошему, хранить промежуточные данные и состояния пользователя нужно в БД, но мы сегодня работаем с ботом, а не с базами данных. Последний штрих – запросим у пользователей подтверждение того, что все введено верно, да не просто так, а с кнопками! Для этого немного отредактируем код метода get_age
И теперь наш бот отправляет клавиатуру, но если на нее нажать, то ничего не произойдёт. Потому что мы не написали метод-обработчик. Давайте напишем:
Остаётся только дописать в начало файла одну строку:
Вот и всё, сохраняем и запускаем нашего бота:


















