Polls 2.0: Visible Votes, Multiple Answers, and Quiz Mode
Since we first added polls for groups and channels, they’ve been used for everything from deciding where to have lunch to organizing leaderless protests. Today we’re expanding the range of possibilities with three new kinds of Telegram polls.
Visible Votes
Previously, all polls on Telegram were anonymous. With this update, you can create polls that allow everyone in the group to see who voted for what. Now you will know exactly which friends you disagree with on the matter of pineapple and pizza.
Naturally, you can still create anonymous polls to make sure nobody finds out it was you who voted for broccoli instead of cookies.
Multiple Answers
One of the best ways to settle the score is with polls that allow people to select multiple answers. Scheduling events, or choosing a playlist of songs for a party – sometimes you need more than one choice.
Our aunt who has a knack for statistics and exploring bizarre correlations kept asking for this feature – and we just couldn’t say no. (33% of developers who didn’t refuse this request were also found to be addicted to cheese.)
Quiz Mode
For the game show guru and “Who Wants To Be A Millionaire” contestant in all of us, polls now have Quiz Mode. Such polls have one correct answer and can power anything from trivia games to public service exams.
As if guessing right wasn’t sweet enough, correct answers will trigger a shower of confetti.
Creating Polls
Polls can be created in groups or channels (they feel lonely in one-on-one chats). Simply choose the “Poll” option in the attachment menu. Type in your question, add answer options, choose the settings that fit your purpose best – and you’re ready to go:
Bot API and Quiz Bot
All the new poll types are supported in today’s update to our Bot API, so bot developers can build on this new functionality.
As an example, we’ve created a Quiz Bot that lets you create multi-question quizzes and share them with others. It also lets you add text or media before questions to help create exam-style prompts with graphs and tables – or better yet, your own Know Your Meme tests.
Once your quiz is ready, you can share it to a group or channel – or invite users to answer questions privately, in a chat with the bot. To see how this works, try our demo quiz: Who is Who in the ‘Great Minds’ sticker pack.
The bot will keep tabs on how many questions users got right and how much time it took them to complete the quiz. It also keeps a global leaderboard for each quiz you create.
Message Corners
In addition to the new polls, our apps just got a new visual setting. If you find your Telegram messages too hip to be square (or round, depending on your platform), you can tweak the appearance of message bubbles in Settings:
Download Progress Counters on Android
Just like on iOS, Android users can now see exact progress counters when downloading or uploading files – if they’re in the mood to count bits and bytes.
And that’s it for today. Here’s to a good new year full of updates. Stay tuned!
January 23, 2020
The Telegram Team
В Telegram обновили функцию опросов и запустили Quiz Bot
Мессенджер Telegram выпустил крупное обновление для Android и iOS. Ряд обновлений коснулся функции опросов.
Опросы получили опцию видимых голосов. Теперь в своем канале можно продемонстрировать, кто и за какой вариант проголосовал, а также появилась возможность дать больше одного ответа. При этом функция анонимных опросов сохранена.

В Bot API добавлен режим викторины и для демонстрации его возможностей запущен Quiz Bot, который позволяет создавать опросы с множеством вопросов, изображениями и дополнительным текстом. Бот будет отслеживать, сколько времени пользователи тратят на опрос и сколько правильных ответов они дают. Он также сохранит глобальный список лидеров для каждого теста.

В приложении появились также новые визуальные настройки. Углы сообщений можно округлять и наоборот.
Кроме того, пользователи Android теперь могут видеть точные счетчики прогресса при загрузке файлов.

- «TelegramBot инструкция по созданию базового функционала для бота. (Часть 1)»
- «TelegramBot. Базовый функционал. Мухи отдельно, котлеты отдельно. (Часть 2)»
- «TelegramBot. Базовый функционал. Стикеры и смайлы. (Часть 3)»
- «Telegram-бот для управления инфраструктурой»
- «Как я делал поисковик для Telegram»
Роутеры, многофайловость и структура бота¶
В этой главе мы познакомимся с новой фичей aiogram 3.x — роутерами, научимся разбивать наш код на отдельные компоненты, а также сформируем базовую структуру бота, которая пригодится в следующих главах и вообще по жизни.
Точка входа в приложение¶
Театр начинается с вешалки, а бот начинается с точки входа. Пусть это будет файл bot.py . В нём мы определим асинхронную функцию main() , в которой создадим необходимые объекты и запустим поллинг. Какие объекты являются необходимыми? Во-первых, разумеется, бот. Их может быть несколько, но об этом как-нибудь в другой раз. Во-вторых, диспетчер. Он занимается приёмом событий от Telegram и раскидыванием их по хэндлерам через фильтры и мидлвари.
import asyncio from aiogram import Bot, Dispatcher # Запуск бота async def main(): bot = Bot(token="TOKEN") dp = Dispatcher() # Запускаем бота и пропускаем все накопленные входящие # Да, этот метод можно вызвать даже если у вас поллинг await bot.delete_webhook(drop_pending_updates=True) await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())
Но чтобы обрабатывать сообщения, этого недостаточно, нужны ещё хэндлеры. Мы хотим их расположить в других файлах, чтобы не устраивать портянки на несколько тысяч строк. В предыдущих главах все наши хэндлеры прицеплялись к диспетчеру, но сейчас он внутри функции и мы точно не хотим делать его глобальным объектом.
Что же делать? И тут на помощь приходят.
Роутеры¶
Обратимся к официальной документации aiogram 3.x и посмотрим на следующее изображение:

- Диспетчер — корневой роутер.
- Хэндлеры цепляются к роутерам.
- Роутеры могут быть вложенными, но между ними только однонаправленная связь.
- Порядок включения (и, соответственно, проверки) роутеров явно определён.
На следующем изображении виден порядок поиска апдейтом нужного хэндлера для выполнения:

Напишем простенького бота с двумя фичами:
- Если боту отправили /start , он должен прислать вопрос и две кнопки с текстами «Да» и «Нет».
- Если боту прислали любой другой текст, стикер или гифку, он должен ответить названием типа сообщения.
Начнём с клавиатуры: создадим рядом с файлом bot.py каталог keyboards , а внутри него файл for_questions.py и напишем функцию для получения простой клавиатуры с кнопками «Да» и «Нет» в один ряд:
keyboards/for_questions.py
from aiogram.types import ReplyKeyboardMarkup from aiogram.utils.keyboard import ReplyKeyboardBuilder def get_yes_no_kb() -> ReplyKeyboardMarkup: kb = ReplyKeyboardBuilder() kb.button(text="Да") kb.button(text="Нет") kb.adjust(2) return kb.as_markup(resize_keyboard=True)
Ничего сложного, тем более, что мы клавиатуры подробно разбирали ранее. Теперь рядом с файлом bot.py создадим другой каталог handlers , а внутри него файл questions.py .
handlers/questions.py
from aiogram import Router, F from aiogram.filters import Command from aiogram.types import Message, ReplyKeyboardRemove from keyboards.for_questions import get_yes_no_kb router = Router() # [1] @router.message(Command("start")) # [2] async def cmd_start(message: Message): await message.answer( "Вы довольны своей работой?", reply_markup=get_yes_no_kb() ) @router.message(F.text.lower() == "да") async def answer_yes(message: Message): await message.answer( "Это здорово!", reply_markup=ReplyKeyboardRemove() ) @router.message(F.text.lower() == "нет") async def answer_no(message: Message): await message.answer( "Жаль. ", reply_markup=ReplyKeyboardRemove() )
Обратим внимание на пункты [1] и [2]. Во-первых, мы в файле создали свой собственный роутер уровня модуля, и далее будем цеплять его к корневому роутеру (диспетчеру). Во-вторых, хэндлеры «отпочковываются» уже от локального роутера.
Аналогичным образом сделаем второй файл с хэндлерами different_types.py , где просто будем выводить тип сообщения:
handlers/different_types.py
from aiogram import Router, F from aiogram.types import Message router = Router() @router.message(F.text) async def message_with_text(message: Message): await message.answer("Это текстовое сообщение!") @router.message(F.sticker) async def message_with_sticker(message: Message): await message.answer("Это стикер!") @router.message(F.animation) async def message_with_gif(message: Message): await message.answer("Это GIF!")
Наконец, вернёмся к нашему bot.py , импортируем файлы с роутерами и хэндлерами, и подключим их к диспетчеру:
import asyncio from aiogram import Bot, Dispatcher from handlers import questions, different_types # Запуск бота async def main(): bot = Bot(token="TOKEN") dp = Dispatcher() dp.include_routers(questions.router, different_types.router) # Альтернативный вариант регистрации роутеров по одному на строку # dp.include_router(questions.router) # dp.include_router(different_types.router) # Запускаем бота и пропускаем все накопленные входящие # Да, этот метод можно вызвать даже если у вас поллинг await bot.delete_webhook(drop_pending_updates=True) await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())
Мы просто импортируем файлы из каталога handlers/ и подключаем роутеры из этих файлов к диспетчеру. И здесь снова важен порядок импортов! Если мы поменяем местами регистрацию роутеров, то на команду /start бот будет отвечать фразой «Это текстовое сообщение!», поскольку функция message_with_text() первой успешно пройдёт все фильтры. Но о самих фильтрах мы поговорим чуть позже, а пока рассмотрим ещё один вопрос.
Итог¶
У нас получилось аккуратно разделить бота по разным файлам, не нарушая его работу. Примерное дерево файлов и каталогов получилось следующим (здесь сознательно пропущены некоторые несущественные для примера файлы):
├── bot.py ├── handlers │ ├── different_types.py │ └── questions.py ├── keyboards │ └── for_questions.py
В дальнейшем мы будем придерживаться такой структуры, плюс добавятся новые каталоги для фильтров, мидлварей, файлов для работы с базами данных и т.д.
Используйте Telegram для Бизнеса!

После регистрации в Teletype, добавьте в настройках Telegram-канал. С этого момента все сообщения, отправленные на ваш номер Telegram, будут попадать в панель Teletype, и ваши операторы могут сразу отвечать на них
Клиент нажимает на кнопку Telegram на вашем сайте или пишет обычное сообщение в Telegram по номеру телефона, который вы указали
в соцсетях
Операторы общаются с клиентами в удобном для них мессенджере, отвечают на вопросы, решают проблемы, уточняют детали заказа, отправляют фотографии товара и увеличивают ваши продажи
![]()
Подключите Telegram всего за 1 минуту
по номеру телефона

Привлекайте аудиторию миллениалов
Добавьте кнопку Написать в Telegram на ваш сайт
Не заставляйте ваших клиентов писать вам имейлы или звонить — это вчерашний день. Вместо этого дайте клиентам возможность быстро написать вам в их любимом мессенджере.


Добавляйте несколько номеров и ведите общение в одном окне

Объедините все ваши мессенджеры в одном окне
Почему стоит использовать Telegram с Teletype
Teletype позволяет всем вашим операторам работать через один телефонный номер Telegram
Telegram без Teletype 🙁
0 ₽/мес
1 оператор В чате может работать только один оператор.
История сообщений — на телефоне История сообщений хранится в телефоне оператора. При прекращении сотрудничества оператор может унести важные данные.
Нет единого номера, нет CRM У каждого оператора свой личный номер. Если клиенту будут писать с разных номеров, это снизит уровень доверия к бренду.
Нет статистики и контроля Недоступны статистика ответов операторов: невозможно проконтролировать качество и скорость работы специалиста.
Нет встроенных шаблонов ответов Оператору необходимо много раз отвечать на одинаковые вопросы клиентов, либо вручную копировать ответы из заметок.
Нет заметок о клиентах Нет возможности оставлять заметки о клиентах и делиться ими с другими операторами.
Telegram с Teletype
От 2 550 ₽/мес
Сколько угодно операторов В одном чате могут работать несколько операторов одновременно. Первый оператор бесплатно, далее — 570 ₽/мес за оператора.
Общая история сообщений История всех сообщений хранится в панели Teletype и доступ оператора к ним можно ограничить в любой момент.
Несколько телефонных номеров и интеграции с CRM-системами Возможность подключить несколько телефонных номеров, а также интеграция с CRM-системами Bitrix 24 и AmoCRM.
Подробная статистика операторов Статистика эффективности каждого оператора по скорости и качеству ответа.
Шаблоны ответов Шаблоны сообщений для максимально эффективной работы оператора.
Заметки о клиентах Операторы могут оставлять важные заметки о клиентах, чтобы все члены команды могли их учесть.
Для тех, кто работает стационарно или на ходу Для тех, кто работает стационарно или на ходу
Отвечайте клиентам с компьютера или через мобильное приложение. Не упускайте заказы даже если вы стоите в пробке
Интегрируйтесь
с нашим API
У нас простой и понятный API для интеграции любых ваших систем. API позволяет принимать и отправлять сообщения по любым каналам, искать по номеру телефона и даже выгружать аватарки из профилей в мессенджерах.
Если вы не нашли необходимого функционала, обратитесь в нашу поддержку и мы обязательно постараемся помочь.

Подключите
Telegram через бота!
• Получайте и отвечайте на сообщения в Telegram!
• Мгновенная отправка и получение сообщений
• Можно подключить сколько угодно Telegram-ботов

Готовые интеграции
Подключите мессенджеры напрямую к вашей CRM-системе

-
—> —>

—> —>

—> —>

–>—> –>—>
—> —>

—> —>

—> —>
Корпоративная версия
Коробочная версия для крупных организаций с большим количеством операторов
- Персональная установка сервиса на серверах клиента
- Приоритетные поддержка и обновление системы
- Безлимитный доступ к любым опциям
- Неограниченное количество каналов и операторов
- Возможен персональный брендинг
Вопросы и ответы
Сколько это стоит?
Telegram-канал стоит 2 550 ₽ в месяц.
Наш конфигуратор тарифа позволяет вам самостоятельно выбрать только те услуги, которые вам необходимы, не переплачивая за всё остальное.
Сколько номеров можно подключить?
Можно подключить любое количество номеров Telegram и операторов. Обратите внимание: 570 ₽/мес за оператора.
Сколько операторов может быть на одном номере?
На одном номере может работать любое количество операторов.
Это подключение через бота?
Нет. Вы подключаете свой Telegram по номеру телефона. Для клиента это выглядит так, как если бы с ним общался обычный пользователь Telegram.
Если вы хотите подключить бота, этим можно воспользоваться как дополнительной услугой.
Как работает сервис?
После регистрации в Teletype, вы добавляете в настройках Telegram-канал.
С этого момента все сообщения, отправленные на ваш номер Telegram, будут попадать в панель Teletype, и ваши операторы могут сразу отвечать на них.
Клиент нажимает на кнопку Telegram на вашем сайте или пишет обычное сообщение в Telegram по номеру телефона, который вы указали в соцсетях.
Операторы общаются с клиентами в удобном для них мессенджере, отвечают на вопросы, решают проблемы, уточняют детали заказа, отправляют фотографии товара и увеличивают ваши продажи.
Можно ли первым написать клиенту?
Да, если у клиента установлен Telegram. Для этого нужно нажать на кнопку «Новый диалог» в панели Teletype, выбрать канал Telegram, ввести номер телефона клиента или никнейм и начать диалог.

