Как играть на тамтаме


там - история появления и развития музыкального инструмента

Там-там – ударный музыкальный инструмент, один из видов гонга. Состоит из выпуклого диска большого размера, который изготавливают из металла, чаще всего бронзы. Колотушка, используемая для игры, представляет собой деревянную рукоятку с войлочным наконечником. При ударе колотушкой, диск долго вибрирует, в результате чего получаются звуковые волны нарастания и удаления, что создает ощущение колоссальной звуковой массы. Там-там имеет торжественный, печальный и грозный тембр. Игра на там-там возможна разными способами. Для получения сложных ритмов применяли барабанные палочки или стержни из металла, которые водили по кругу диска. Извлеклись звуки и от контрабасного смычка.

Африканские или азиатские корни

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

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

Там-там как средство связи

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

Там-там в классической и современной музыке

В классической музыке там-там впервые стал использовать композитор Джакомо Мейербер. Современный инструмент стал выглядеть немного иначе своего предка. Для изготовления диска применяется чаще бронза, реже сплав с медью и оловом. Сам диск имеет выпуклую форму и более внушительный размер. В музыкальных композициях для оркестра там-там дает возможность передать музыке особое настроение: величественность, тревожность, грозность. Звуки там-там звучат в известных произведениях: «Шехеразада» Римского-Корсакова, «Руслан и Людмила» Глинки, в конце Симфонии №6 Чайковского. У Глинки инструмент можно услышать в эпизоде, когда Черномор похищает Людмилу. У Римского-Корсакова в «Шехеразаде» трагические звуки раздаются при гибели корабля. Д. Шостакович в ряде произведений применял там-там, чтобы подчеркнуть в произведениях трагическую кульминацию.

“Как вы там, празднуете с нашими портретами на палке?»

Меня не оставляет один странный образ.

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

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

И когда они делают эту свою остановку, они - незнакомые, совсем чужие, в форме и без, - быстро спрашивают друг друга: ну, как там твои? там, на том берегу?

- Мой телефонами торгует. Скучает. Покупатели все тупые.

- Мой квартиру купил. На Москву не хватило, только на Домодедово.

- Моя замуж вышла и уехала. Занимается кулинарными фестивалями.

- А у меня все Путина свергают. Но пока никак.

- Мой тоже воюет. Освобождал Иловайск.

- Оккупировал. Это мой освобождал, вышел из окружения.

- А мой за деньги и в Африке. Там какой-то фельдмаршал у них наступает.

- Переводит Питера Слотердайка.

- Сидит.

- Возит какую-то дрянь то в Самару, то в Астрахань. А потом неделю дома.

- Забывает таблетки принять. Забывает, куда очки положила. А меня не забывает.

- Вернулась с Бали. Вроде не курит.

- Развелся. Переживает.

- Ночует в яме в лесу. Не как мы, а нарочно, развлечение у них такое.

- Фотографирует еду. Приготовит - и фотографирует.

- Наряжается в гимнастерку с фуражкой и клеит на машину: "можем повторить".

- Пишет, что праздновать 9 мая не надо, а надо помнить. Нас, в смысле, помнить. И все.

- Празднуют. С моим портретом на палке.

- И с моим тоже.

- А моего у них нет. Портрета нет.

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

Расходятся - а потом все-таки сходятся.

В нас.

Потому что вся наша несчастная, прекрасная, грустная, нелепая, грандиозная, неподъемная родина - состоит из одного сплошного продолжения этих умерших людей, из продолжения этих солдат и гражданских.

И если так получилось, что они там - на своем исчезнувшем берегу - не могли спросить друг друга про нас, не умели, не знали, не находили для этого слов, то тогда хотя бы с этой, земной стороны - можно же спросить у мертвых: зачем воевали? зачем страдали?

Чтобы продолжение - было.

И чтобы нам - оказавшимся здесь после них, вместо них, благодаря им, - в день их памяти было удивительно хорошо.

(9 мая 2017)

ЧИТАЙТЕ ТАКЖЕ

Акция Бессмертный полк в Москве 9 мая 2020: прямая онлайн-трансляция

Несмотря на коронавирус, в России пройдет акция "Бессмертный полк" (подробности)

ФОТОРЕПОРТАЖ

«Русские витязи», «Стрижи» и флаг России над пустой Красной площадью: лучшие фото 75 Парада Победы в Москве

«КП» собрала лучшие фотографии торжественного авиапарада в Москве (подробности)

Что такое «ТамТам» и стоит ли переходить в него из Telegram

«ТамТам» — это мессенджер, запущенный «Mail.ru» в мае 2017 года. Сейчас у него больше миллиона загрузок в Google Play. Сегодня в него начали приходить «беженцы» из Telegram, и за последние несколько часов число пользователей сервиса выросло более, чем в десять раз. Разбираемся, стоит ли он внимания.

«ТамТам» разработан на базе мессенджера «Одноклассников», и интеграция с этой сцоциальной сетью в приложении осталась. Так, в профилях друзей можно сразу перейти на их страницу в «ОК». А если через «Одноклассники» залогиниться, в «контактах» появятся все друзья из этой соцсети, у которых установлен мессенджер.

«ТамТам» доступен на всех возможных платформах: iOS, Android, Windows и даже Linux. Есть и веб-версия.

Одна из уникальных особенностей мессенджера — для входа необязательно указывать свой номер телефона. Войти можно через все те же «Одноклассники» или с помощью аккаунта Google.

В целом, «ТамТам» очень похож на Telegram. Здесь, например, тоже есть каналы, правда, судя по количеству подписчиков и истории постов, ведутся они не слишком регулярно. В Mash на момент публикации насчитывалось 5600 человек, тогда как в Telegram — 280 тысяч. То же самое касается обоих «Лентачей» — 50 и 301 человек соответственно, причем последние посты датированы 10-м апреля.

Зато каналы можно искать по названию прямо внутри приложения — Telegram, например, так не умеет.

Из более-менее крупных новостных каналов есть BBC и RT.

Есть свой канал и у «вДудя».

Тоже не слишком активный.

На месте и стикеры — правда, здесь они отличаются от того, что есть в мессенджере Павла Дурова. По сути это гиф-картинки, которые воспроизводятся при отправлении или по нажатию. Искать их можно внутри приложения по ключевым словам. Популярных стикеров из «ТГ» тут большей частью нет (прощай, taxiderm!), зато есть свои. Чаще всего они представляют собой коротенькие вырезки из популярных фильмов и сериалов. Нам, например, удалось найти стикеры из «Физрука», «Клиники» и Gravity Falls. Герой из последнего мультсериала, кстати, почему-то отображается при запросе «ведьмак». Ждем кроссовер!

В «Там-там» встроены аудиозвонки, а также видеочат — и в этом он дает Telegram фору. Работает все это вполне неплохо, качество связи не хватает звезд с неба, но пользоваться можно, — интерфейс такой же, как, например, в Whatsapp.

Примечательно, что звонить можно и с десктопной версии.При этом танцевать с бубном, как в том же WhatsApp для того, чтобы получить доступ к переписке на другой платформе, не нужно — всё хранится на серверах. Все фотографии и файлы, которые вам отправили, пока вы сидели со смартфона, запросто можно скачать и с компьютера.

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

На «Хабре» есть пост от одного из разработчиков приложения, но там тоже ничего об этом не сказано. Зато, по словам программиста «ТамТам», создатели фокусировались на скорости работы и оптимизации в условиях плохой связи. Мы запускали приложение на Galaxy S9 и iPhone 6S — в обоих случаях приложение работало здорово. Что, в общем-то, неудивительно.

В «ТамТам» нет большинства интересных и популярных каналов, а базу контактов вам придется наращивать заново, буквально уговаривая людей установить себе очередной мессенджер. Кроме того, вы будете скучать и по стикерам — анимированные картинки из «Холостяка» вряд ли заменят вам тот огромный набор мемов, что сгенерировали за эти годы пользователи Telegram. И самое главное — нет никакой гарантии, что условный «Товарищ Майор» не получит доступ к вашей переписке.Тем не менее, в целом «ТамТам» производит скорее положительное впечатление, пускай и способен окунуть вас в чудную атмосферу «Одноклассников». Здесь есть все, что нужно: чаты и групповые чаты, аудио и видеозвонки, каналы и клиенты для разных платформ. Кроме того, если «ОК» — ваша основная социальная сеть, вы оцените и интеграцию. На мой взгляд, «ТамТам» гораздо удобнее того же WhatsApp.

А еще это хороший вариант «мессенджера для родственников» — в самый раз, чтобы позвонить маме или бабушке

Как установить TamTam? Инструкция для IOS и Android.

После анонса нового приложения для общения от компании Mail.ru многие из пользователей задают вопрос: «Как установить tam tam?». Их интерес к этому мессенджеру вызван тем, что он создан специально для замены сервиса «ОК Сообщения», который очень популярен у участников соцсети «Одноклассники». Их количество уже превысило 290 млн человек.

Стоит отметить, что новое российское приложение доступно, прежде всего, владельцам устройств, функционирующих под управлением таких популярных ОС, как iOS и Android. Однако пользователи еще могут воспользоваться данным мессенджером на персональном компьютере.

Установка софта на Android

Данное приложение доступно пользователям совершенно бесплатно в Play Market. Поэтому, чтобы установить там там, требуется зайти в официальный магазин и воспользоваться поиском, в строке которого придется набрать название мессенджера, а именно ТамТам.

После этого появится список программ, из которого необходимо выбрать требуемый софт. Он, всего скорее, будет располагаться на первой позиции. После выбора нового российского сервиса откроется его персональная страница в магазине Play Market. На ней имеется возможность познакомиться с отзывами людей, которые уже установили программу, а также прочитать ее описание. Здесь же размещается рейтинг и информация о количестве загрузок данного ПО.

Загрузка и установка тамтам осуществляется очень быстро, так как программа весит совсем немного. Эти процессы выполняются в автоматическом режиме после нажатия кнопочки с надписью «Установить». Как только процесс установки софта завершится, пользователь увидит сообщение об этом. На следующем этапе он может выполнить запуск программы непосредственно из официального магазина.

Подробное руководство по установке TamTam на Android

Операция авторизации в мессенджере выполняется при помощи Google аккаунта или учетной записи соцсети Одноклассники. Этот процесс еще можно осуществить, используя номер сотового телефона.

Примечание! Аутентификация пользователя в мессенджере, установленного на iOS-устройстве, осуществляется аналогичным образом.

Установка софта на девайс с iOS

Владельцы девайсов компании Apple выполнить загрузку новой российской утилиты могут также бесплатно, но для этого им нужно открыть App Store.

Данный официальный магазин приложений и игр позволяет установить софт всего лишь в несколько кликов.

Примечание! Функционал версии для iOS точно такой же, как и у программы для Android.

Этот новый мессенджер позволяет пользователям использовать много инновационных инструментов. К их числу относится:

  • Оффлайн-режим, благодаря которому можно смотреть видеоматериалы, фотографии и слушать музыкальные файлы, а также отправлять сообщения собеседникам, если девайс не соединен с интернетом. Короткие тексты поступят абонентам после подключения устройства к глобальной сети.
  • Система каналов такая же, как и в Telegram.
  • Веселые анимированные стикеры и так далее.

Это только некоторые возможности нового софта, чтобы воспользоваться всеми преимуществами мессенджера нужно его установить на свое устройство. Для этого в официальном магазине необходимо набрать название утилиты. Данное действие осуществляется в поисковой строке. После его выполнения пользователь увидит страницу мессенджера, на которой размещена кнопка «Загрузить». Когда она будет нажата, тогда произойдет скачивание и установка утилиты на телефон от компании Apple.

Подробное руководство по установке TamTam на IOS

Если разработчик выпустит обновленную версию приложения, то она установится на устройство в автоматическом режиме.

Примечания! Чтобы использовать Tam Tam на персональном компьютере нужно в начале всей процедуры установить эмулятор Android среды. Именно он позволит запустить на десктопе или ноутбуки самораспаковывающийся архив программы в формате APK.

Подробное руководство по установке TamTam на Компьютер

Как пользоваться ТамТам: регистрация, настройка и удаление

ТамТам по популярности нельзя сравнивать с такими гигантами, как WhatsApp или Telegram, но все же определенная аудитория у него имеется. И это неплохой результат, ведь мессенджер появился чуть больше года назад. А со всеми новыми приложениями одна и та же проблема — непонятно, как с ними работать. Специально для новичков мы подготовили инструкцию. А теперь давайте рассмотрим основные моменты, как пользоваться мессенджером Там Там.

Основные моменты

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

Регистрация

В мессенджере Там Там регистрация очень удобная. Всего пользователю доступно три способа создания учетной записи: через телефонный номер, аккаунт в Одноклассники и почту Gmail. Разберем все на примере мобильного. Делается все так:

  1. В приветственном окне нажмите на «Войти через телефон».
  2. Впечатайте собственный номер и нажмите «Да» в окне проверки.
  3. Введите секретный код, который придет в сообщении.
  4. Установите имя пользователя.

Настройки

Когда процедура регистрации завершена, имеет смысл перейти к настройкам приложения ТамТам. Чтобы открыть меню параметров, выдвиньте боковое меню и тапните по соответствующему пункту.Основная страница разделена на шесть пунктов:

  • Уведомления — оповещения для личных сообщений, обновлений в чатах и каналах, а также для прочих событий.
  • Медиа — параметры загрузки и воспроизведения фотографий, гифок, стикеров и аудиофайлов. Помимо этого, имеется опция чистки кэша.
  • Приватность — настройки конфиденциальности и видимости для других пользователей.
  • Фон — установка обоев для чата.
  • Сообщения — параметры отправки сообщений.
  • Язык — смена языка локализации приложения.

Удаление

Ну и напоследок разберемся с удалением мессенджера Там Там с устройства. И начнем именно с телефонов и планшетов.

На Android или iOS достаточно сделать долгий тап по нужной иконке и перетащить ее к корзине либо нажать на крестик, а потом подтвердить выполнение процедуры.

На ПК с Windows все делается через инструмент «Программы и компоненты», доступный из панели управления. Здесь в общем списке найдите TamTam, кликните по соответствующей графе ПКМ и выберите опцию деинсталляции.

На Линуксе в терминале достаточно выполнить следующую команду:

sudo apt-get remove tamtam-app

В случае с Mac OS все делается так:

  1. Откройте обозреватель Finder.
  2. Перейдите в «Программы».
  3. Найдите графу TamTam.
  4. Кликните по ней ПКМ и выберите опцию переноса в корзину.
  5. А теперь выполните чистку корзины.
Читайте так же:

Как мы создавали Bot API ТамТам | Блог

Сегодня мы запускаем бета-тестирование Bot API ТамТам! Если вы разработчик, то уже сейчас сможете создать одного из первых ботов в ТамТам.

Как принять участие в бета-тестировании Bot API?

Мы запустили официальный канал про Bot API ТамТам. Там будут публиковаться все новости и change log, обязательно подпишитесь. Для участия в тестировании разработчикам нужно написать аккаунту @botapibeta, мы добавим вас в чат бета-тестировщиков и откроем доступ к @primebot.

Также вам понадобятся документация по Bot API и клиенты:

Общее описание Bot API

Java Client

OpenAPI JSON schema

Kotlin DSL client

В ближайшее время мы проведем конкурс на лучших ботов для ТамТам, следите за каналом Bot API.

А еще по поводу долгожданного запуска наш ведущий iOS разработчик Юрий Буянов рассказывает в формате интервью, как мы создавали Bot API ТамТам.

- Как давно были изобретены боты?

Чат-боты оказались на волне популярности в последние года три. Но те разработчики, которые уже закончили школу, наверняка знали о них и раньше. Я, например, еще в середине девяностых общался с Eggdrop в IRC-каналах, а в двухтысячных писал бота для Skype. Если отвлечься от мессенджеров и углубиться в вопрос диалоговых интерфейсов, которые позволяют общаться с ЭВМ как с живым собеседником, можно вспомнить и ELIZA (1966), и Тьюринга с его тестом (1950, “Computing Machinery and Intelligence”), который подразумевал переписку с искусственным интеллектом.

- У ТамТам сразу был Bot API?

Запросы на доступ к API мессенджера для создания ботов мы стали получать даже раньше, чем вышел первый публичный релиз ТамТам. Команда использовала ТамТам для коммуникации между собой и другими командами разработчиков, как только стали доступны альфа-версии первых клиентов. Возникло желание интегрировать внутреннюю инфраструктуру (таск-трекер, CI-сервера, мониторинг) в новый мессенджер. Несмотря на то, что как разработчики мы имели полный доступ к документации по бинарному (а с началом разработки веб-клиента и вебсокет-) протоколу, который используется мессенджером, писать на нём ботов было неудобно. Мало кто готов инвестировать время и силы на работу с MessagePack и аккуратную работу с TCP-сокетами для того, чтобы написать бота, который будет уведомлять участников рабочего чата о новых сборках или ошибках.

Был нужен специальный упрощенный API, как и у всех современных мессенджеров. Чем понятней будет API и ниже порог входа в разработку ботов, тем больше их будет написано и тем больше полезных возможностей получит ТамТам.

- Как разрабатывался Bot API ТамТам?

ТамТам был необходим специальный упрощенный API (REST). Обычному разработчику бота не нужна и половина тех возможностей, которые заложены во внутреннем протоколе. Более того, упростив доступ к синхронизации контактов или процессу регистрации, мы облегчили бы работу спамерам и мошенникам. Но и дать доступ через REST к набору методов API — лишь малая часть работы, которую нужно было сделать для запуска продукта “Bot API” для внешних разработчиков.

Разработчикам нужен интерфейс для создания ботов и дальнейшего управления ими. Выписывать токены для работы с API от имени самого разработчика — не самая лучшая идея (мало какой разработчик захочет наблюдать у себя в списке чатов всю переписку бота с пользователями), а регистрировать полноценного пользователя с аутентификацией по уникальному номеру телефона — слишком сложно. Доверить управление ботами мы решили одному из них — @primebot. Он умеет заводить новых ботов, менять данные их профиля, добавлять подписки на вебхуки и так далее.

Чтобы не путать пользователей, хорошо бы явно обозначить ботов на клиенте и поддержать популярные UX-паттерны для работы с ними. Например, автодополнение и подсветку команд, а также сообщения с кнопками.

Разработка удобного и простого API, а также его документирование — это отдельная большая задача, которая требовала ресурсов и времени.

- Расскажи про внутреннее тестирование Bot API

Любая новая функция перед выходом в релиз проверяется тестировщиками и рядовыми коллегами на корректность и удобство использования. Довольно часто по итогам внутреннего тестирования уже законченную функцию приходится полностью перерабатывать. Протестировать формальное соответствие Bot API документации несложно, но как протестировать удобство его использования?

Особенность была в том, что пользователями API являлись сами разработчики, а одна “сессия” его использования — не несколько нажатий на кнопки и отправленных сообщений, а часы, а то и дни разработки определенного бота. Стало ясно, что пора отвлечь разработчиков от текущих задач и устроить хакатон.

Для написания ботов обычно нужен опыт разработки серверных приложений, но в хакатоне приняли участие и разработчики мобильных клиентов, и фронтендеры и тестировщики. Каждый выбрал для себя подходящий стек разработки и идею для бота. Жестких правил не было: кто-то объединялся в команды, кто-то, наоборот, делал пару разных ботов вместо одного.

На разработку ботов отвели два дня, с расчётом на то, что многим разработчикам нужно разобраться с новым для себя стеком, а за первыми попытками использовать Bot API наверняка последует множество его доработок. Так и получилось: iOS-разаботчики, привыкшие к Obj-C, вспоминали Swift и копались в документации к Vapor, тестировщики и фрондендеры углубились в node.js, Android-команда осваивалась с Kotlin.

До финала хакатона добрались 11 ботов, на финальном голосовании команда хакатона определила 5 победителей:

  • Бот для голосований (с помощью него проводили финальное голосование)
  • Бот, играющий в шахматы
  • Бот для заказа обедов в наш офис
  • Бот для скачивания видео
  • Шуточный бот для генерации отмазок ;)

Коллег-победителей мы наградили призами.

В день запуска публичного бета-тестирования желаем всем удачи в разработке ботов! Ваши отзывы пишите @botapibeta и на [email protected]

Разработка ТамТам-бота на Python / Mail.ru Group corporate blog / Habr

Привет, Хабр! Позвольте представиться: меня зовут Сергей Агальцов, и я "программист по жизни". Это значит, что я давно уже IT-менеджер, а вовсе не программист по профессии, но программирование использую постоянно, как в своей основной деятельности, так и как хобби. Как часто говорил один из моих бывших начальников — "Серёга! Ты опять скатился в программирование!" Правда, не могу сказать, что этим был сильно не доволен он или кто-то другой когда-либо.

После появления Bot API у мессенджера ТамТам, я как истинный, а значит ленивый программист, создал 2 библиотеки Python для работы с ним:


  • open API клиента (далее — OAC) — изначально сгенерировал её при помощи OpenAPI Generator на основе схемы API, затем адаптировал с учётом особенностей генератора;
  • оболочку для этого клиента — TamTamBot (далее — TTB), упрощающую работу с OAC.

Так появился некий ТамТам Python SDK.

Сделал это я в первую очередь "для себя, для души", но также предложил и комьюнити ТамТам при желании им воспользоваться. Но, как известно, ни одно доброе дело не остаётся безнаказанным — народ попросил написать обучающую статью. И вот я здесь с этой статьёй. В ней я расскажу, как разработать простого бота при помощи этих библиотек.


Разработать бот, предназначенный для упрощения действий разработчиков ботов. Бот должен работать в режиме перманентного опроса состояния bot-api (long polling). В этой статье бот будет обучен показывать внутренности пересылаемого ему сообщения, а также настроен в соответствие разработанной функциональности.

Подразумевается, что у читателя имеется установленный Python 3, git, подключенный к среде разработки PyCharm (среда разработки может быть и другой, но рассказ будет на основе PyCharm). Желательно понимание основ ООП.


Получение токена происходит через обращение к специализированному боту @PrimeBot

Находим этого бота в ТамТам, вводим команду /create и отвечаем на вопросы:


  • Введите уникальное короткое имя бота латиницей — это юзернейм бота, по которому он будет доступен через @ или по ссылке вида https://tt.me/username. Особых ограничений на юзернейм нет. В частности, слово bot необязательно.
  • Введите имя — это отображаемое имя бота. Здесь уже можно кириллицей.

Если всё введено корректно, то созданный бот будет добавлен в контакты и в ответ мы получим токен — последовательность символов вида: HDyDvomx6TfsXkgwfFCUY410fv-vbf4XVjr8JVSUu4c.



Показать

Создаём каталог:

mkdir ttBotDevHelper

Переходим в него:

cd ttBotDevHelper/

Инициализируем хранилище git:

git init

Качаем необходимые библиотеки, добавляя их как подмодули git:

git submodule add https://github.com/asvbkr/openapi_client.git openapi_client git submodule add https://github.com/asvbkr/TamTamBot.git TamTamBot

Открываем созданный каталог в PyCharm (например из проводника по контекстному меню "Open Folder as PyCharm project") и создаём файл, который и будет содержать наш бот — File/New/Python file. В появившемся диалоге вводим имя — ttBotDevHelper, и отвечаем положительно на вопрос о добавлении в git.

Теперь нужно создать виртуальную среду для нашего проекта.

Для создания виртуальной среды выбираем File/Settings и на закладке проекта выбираем подраздел Project Interpreter. Далее, справа нажимаем на иконку шестерёнки и выбираем Add:

PyCharm предложит свой вариант размещения.

Имеет смысл с ним согласиться.

После создания виртуальной среды откроется предыдущий экран, но на нём уже будет информация о созданной среде. На этом экране необходимо установить необходимые пакеты, нажимая справа иконку с "+" и вводя имена пакетов:


Затем добавляем к проекту файл .gitignore, исключающий файлы, не требующиеся в git, со следующим содержимым:

venv/ .idea/ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class *.log *.log.* .env ttb.sqlite3

Добавим переменную среды с именем TT_BOT_API_TOKEN, в которой укажем значение токена нашего бота, полученного от https://tt.me/primebot и перезапустим PyCharm.

(!) Вместо добавления переменной среды непосредственно в окружение ОС, в PyCharm оптимально использовать специальный файл .env. Его настройка будет рассмотрена ниже.

Поздравляю, теперь можно приступать к самому интересному — написанию своего бота.


Открываем файл ttBotDevHelper.py и пишем первые строки:

# -*- coding: UTF-8 -*- from TamTamBot.TamTamBot import TamTamBot class BotDevHelper(TamTamBot): pass

Здесь мы создаём класс своего бота, основываясь на классе TamTamBot.

PyCharm подсказывает, что класс BotDevHelper содержит абстрактные методы, которые необходимо имплементировать. Нажимаем Alt-Enter на названии класса, выбираем "Implement abstract methods", выбираем все методы (их 2), предложенные PyCharm и нажимаем ОК. В результате будут добавлены два пустых метода-свойства: token и description. Модифицируем получившийся код следующим образом:

# -*- coding: UTF-8 -*- import os from TamTamBot.TamTamBot import TamTamBot from TamTamBot.utils.lng import set_use_django class BotDevHelper(TamTamBot): @property def token(self): return os.environ.get('TT_BOT_API_TOKEN') @property def description(self): return 'Этот бот помогает в разработке и управлении ботами.\n\n' \ 'This bot is an helper in the development and management of bots.' if __name__ == '__main__': set_use_django(False) BotDevHelper().polling()

Свойство token возвращает токен нашего бота, значение которого берётся из переменной окружения TT_BOT_API_TOKEN. Свойство description возвращает расширенное описание нашего бота, которое будет показываться пользователям.

Код в конце файла необходим для запуска нашего бота в режиме опроса состояния.

Отмечу, что базовый класс TamTamBot предполагает использование веб-сервера django для работы в режиме вебхуков. Но сейчас задача проще, и django нам не требуется, о чём мы и сообщаем в строке set_use_django(False). Здесь для объекта нашего класса вызывается метод polling(), который и обеспечивает работу в нужном режиме.

Минимум необходимого сделан. Этот код уже вполне рабочий. Запустим его на выполнение. Для этого нажмём комбинацию клавиш Ctrl-Shift-F10.

Если Вы не добавляли переменную среды ранее, непосредственно в ОС, то при запуске произойдёт ошибка с сообщением "No access_token". Для её устранения настройте PyCharm на использование .env-файла.


Показать как

Создайте текстовый файл .env. Его содержимое в нашем случае должно быть следующим:

TT_BOT_API_TOKEN=токен_нашего_бота

Теперь нужно его подключить к конфигурации запуска в PyCharm:

Выбираем Run/Edit configuration и на закладке EnvFile подключаем наш .env-файл:

После чего нажимаем Apply.

После запуска бота можно перейти в ТамТам, открыть диалог с нашим ботом и нажать кнопку "Начать". Бот сообщит информацию о своих скрытых суперспособностях. Это и означает, что бот работает. Пока бот работает в демо-режиме, в котором доступны 4 команды. Просто ознакомьтесь с ними.

Несмотря на ярко выраженное мнение бота о своей крутости, он же робко намекает и на то, что пока ничего не умеет. Научить его всему необходимому для завоевания мира и является нашей задачей.


Перекроем метод receive_text(), управление которому передаётся при отправке текста в чат с ботом:

 def receive_text(self, update): res = self.msg.send_message(NewMessageBody(f'Ваше сообщение: {update.message}', link=update.link), user_id=update.user_id) return bool(res)

Объект update класса UpdateCmn, который передаётся в данный метод, содержит различную полезную информацию и, в частности, всё то, что нам сейчас необходимо:


  • update.message — объект, содержащий само сообщение;
  • update.link — готовая ответная ссылка на это сообщение;
  • update.user_id — идентификатор пользователя, отправившего сообщение.

Для отправки сообщения от бота используем переменную self.msg, в которой содержится объект MessagesApi, реализовывающий функциональность, описанную в разделе messages описания API. Этот объект содержит нужный нам метод send_message(), который и обеспечивает отправку сообщений. По минимуму, в этот метод необходимо передать объект класса NewMessageBody и адресата — идентификатор пользователя, в нашем случае.

В свою очередь, объект класса NewMessageBody в данном случае создаётся посредством передачи текстового представления объекта сообщения-источника и ответной ссылки на сообшение-источник.

Перезапускаем нашего бота и проверяем в диалоге с ботом, что на любое наше сообщение бот формирует ответ, содержащий внутреннее представление объекта сообщения-источника.

Исходный код данного состояния см. здесь.


При разработке ботов зачастую требуется посмотреть внутреннее представление сообщения по одному или нескольким известным идентификаторам сообщений (message id — mid). Добавим такую функциональность нашему боту. Для этого, вначале, вынесем в отдельный метод функциональность вывода информации о внутреннем представлении сообщений:

 def view_messages(self, update, list_mid, link=None): res = False msgs = self.msg.get_messages(message_ids=list_mid) if msgs: for msg in msgs.messages: r = self.msg.send_message(NewMessageBody(f'Сообщение {msg.body.mid}:\n`{msg}`'[:NewMessageBody.MAX_BODY_LENGTH], link=link), user_id=update.user_id) res = res or r return res

В этот метод мы передаём список mid.

Для получения объектов сообщений мы используем метод self.msg.get_messages, возвращающий список объектов в свойстве messages.

Далее, текстовое представление каждого из полученных сообщений отправляем в наш диалог отдельными сообщениями. Чтобы избежать ошибки, текст формируемого сообщения обрезается по константе максимальной длины сообщения — NewMessageBody.MAX_BODY_LENGTH.

Затем добавим метод, обрабатывающий команду. Назовём её vmp. В команду можно будет передать список mid через пробел.

ТТБ спроектирован таким образом, что обработчик команды должен создаваться как метод с именем cmd_handler_%s, где %s — имя команды. Т.е. для команды vmp метод будет называться cmd_handler_vmp. В обработчик команды передаётся объект класса UpdateCmn. Дополнительно, для команды он может содержать свойство cmd_args, в котором содержится словарь строк и слов в них, которые были введены вместе с командой

Код будет выглядеть так:

 def cmd_handler_vmp(self, update): res = None if not update.this_cmd_response: # Это прямой вызов команды, а не текстовый ответ на команду if update.cmd_args: # Если вместе с командой сразу переданы аргументы list_id = [] parts = update.cmd_args.get('c_parts') or [] if parts: for line in parts: for part in line: list_id.append(str(part)) if list_id: res = self.view_messages(update, list_id, update.link) return bool(res)

Перезапускаем бот. Теперь, если в диалоге бота набрать команду вида: /vmp mid1 mid2 (mid'ы можно взять их предыдущих проверок), то в ответ мы получим два сообщения с внутренним представлением объектов сообщений-источников, по каждому из переданных mid.

Исходный код данного состояния см. здесь.


Также можно попробовать переслать сообщение из другого канала/чата. Но в этом случае будет показано только то, что содержится в сообщении-источнике, находящемся в диалоге с ботом. В частности, при пересылке сообщения не сохраняется информация о кнопках.

Но что делать, если мы хотим увидеть информацию об оригинальном сообщении? В этом случае нужно брать mid из пересланного сообщения.

Для реализации этого режима модифицируем команду vmp таким образом, чтобы при её вызове без параметров она ожидала пересылки сообщения, а после этого брала mid пересланного сообщения и выводила информацию о нём.

(!) Для корректной работы данного функционала, боту должно быть предоставлено разрешение на чтение из канала/чата источника.

Код команды модифицируем следующим образом:

 def cmd_handler_vmp(self, update): res = None if not update.this_cmd_response: # Это прямой вызов команды, а не текстовый ответ на команду if update.cmd_args: # Если вместе с командой сразу переданы аргументы list_id = [] parts = update.cmd_args.get('c_parts') or [] if parts: for line in parts: for part in line: list_id.append(str(part)) if list_id: res = self.view_messages(update, list_id, update.link) else: # Вывод запроса для ожидания ответа self.msg.send_message(NewMessageBody(f'Перешлите *одно* сообщение канала/чата для показа его свойств:'), user_id=update.user_id) update.required_cmd_response = True # Сообщаем о необходимости ожидания текстового ответа else: # Текстовый ответ команде message = update.message link = message.link # Доступ к пересланному сообщению через свойство link # Проверим - пересылка ли это. if link and link.type == MessageLinkType.FORWARD: res = self.view_messages(update, [link.message.mid], update.link) else: # Выведем сообщение об ошибке и сообщим в коде возврата, что команда не отработала. self.msg.send_message(NewMessageBody(f'Ошибка. Необходимо *переслать* сообщение из канала/чата. Повторите, пожалуйста.'), user_id=update.user_id) return False return bool(res)

А т.к. при таком подходе увеличивается риск из-за отсутствия доступа к сообщениям, то в метод view_messages() добавим проверку на соответствие количества запрошенных/полученных сообщений:

 def view_messages(self, update, list_mid, link=None): res = False msgs = self.msg.get_messages(message_ids=list_mid) if msgs: # Сравнение количества переданных mid с количеством полученных сообщений if len(msgs.messages) < len(list_mid): self.msg.send_message(NewMessageBody( f'Не удалось получить все запрошенные сообщения. Проверьте доступ бота @{self.username} к каналам/чатам этих сообщений.', link=update.link ), user_id=update.user_id) return False else: for msg in msgs.messages: r = self.msg.send_message(NewMessageBody(f'Сообщение {msg.body.mid}:\n`{msg}`'[:NewMessageBody.MAX_BODY_LENGTH], link=link), user_id=update.user_id) res = res or r return res

Перезапускаем бот, даём команду /vmp и после вывода приглашения о необходимости пересылки, пересылаем сообщение из канала/чата. При наличии у бота прав на чтение сообщений в этом канале/чате, будет выведено текстовое представление объекта пересланного сообшения. Если доступа нет, то бот сообщит о возможной проблеме и будет ожидать пересылки из корректного источника.


Теперь осталось навести лоск. Перекроем свойство about, возвращающее текст, который бот выводит при начале работы с ним, а также по команде /start.

 @property def about(self): return 'Этот бот помогает в разработке и управлении ботами.'

Перекроем метод get_commands(), возвращающий список команд нашего бота, отображающийся в диалоге с ботом.

 def get_commands(self): # type: () -> [BotCommand] commands = [ BotCommand('start', 'о боте'), BotCommand('menu', 'показать меню'), BotCommand('vmp', 'показать свойства сообщения'), ] return commands

Перекроем свойство main_menu_buttons, возвращающее список кнопок главного меню, вызываемого по команде /menu.

 def main_menu_buttons(self): # type: () -> [] buttons = [ # Кнопка будет выведена цветом по умолчанию - серым [CallbackButtonCmd('О боте', 'start')], # Кнопка будет выведена цветом для позитивных действий - синим. Также есть негативная - красная [CallbackButtonCmd('Показать свойства сообщения', 'vmp', intent=Intent.POSITIVE)], ] return buttons

Перезапускаем бот, убеждаемся что всё в порядке. Поздравляю, Ваш первый бот создан и, несмотря на некоторую игрушечность, обладает вполне востребованной функциональностью.

Исходный код данного состояния см. здесь.

Работающего бота @devhelpbot можно посмотреть здесь.

На этом, пока, всё. Если тема заинтересовала, то в следующих статьях могу рассмотреть дальнейшее развитие бота. Например, добавление кастомных кнопок (в частности Да/Нет) и их обработку, отсылку различного вида контента (файлы, фото и пр.), работа в режиме webhook и т.п.

Кстати, оперативно вопросы можно задать в специальном чате. Туда же направляйте и предложения/идеи.

Почему ТамТам от mail.ru лучше, чем Телеграм (на самом деле, нет) / Оффтопик / iXBT Live

Запретят нам Телеграм – не беда, уйдем в ТамТам.

Пока все интернеты истерили по поводу блокировки Telegram, по статистике Play Market миллион пользователей установили себе ТамТам, а по рейтингу новый мессенджер уже обогнал WhatsApp, Viber и даже Telegram.

Неужели он так хорош? В сети я пока слышал лишь упреки, мол, криво слеплен на скорую руку, половина не работает, упор сделан совсем не на то, и вообще, это просто филиал Одноклассников. Отзывы в Маркете тоже далеко не восторженные. Знакомых, которые поставили опыт на себе, у меня, к счастью, нет — все продолжают пользоваться тележкой.

Давайте я вкратце опишу, чем лично для меня хорош Телеграм, и почему другие мессенджеры сильно ему проигрывают. Телеграм простой, легкий, имеет полноценные мобильную и десктопную версии, не потеряет историю при переустановке (как WhatsApp и Viber). Качество звонков в какой-то момент стало на голову выше звонков в Viber, из-за чего фиолетовый мессенджер пришлось оставить совсем — теперь он только шлет спам от магазинов. В Телеграм можно редактировать сообщения (и да, это важно), удобно отправлять медиафайлы. Здесь нет навязчивой рекламы, не добавляются мутные личности с предложением работы. А еще здесь есть множество каналов с качественным и полезным контентом от простых новостей и мемчиков до приличных журналов с хорошими статьями, которые приятно читать во встроенном браузере. Ах да, в отличие от Viber, Telegram вполне себе спокойно работает через EDGE в полях, где WhatsApp и Viber могли часами отправлять одно сообщение. Смейтесь, но в провинции это бывает полезно. Думаю, этого достаточно.

Итак, на момент написания статьи Роскомнадзор заблокировал уже 16 000 000 айпишников, но Telegram по-прежнему работает. Зато сильно досталось всему остальному интернету. Видимо, к концу недели интернет заблокируют совсем, и скажут: «Дуров, ну что же ты натворил? Все из-за твоей тележки».

 

Ну, ладно. Так что же там с ТамТам?

Пока не видно каких-либо существенных различий. Ну да, описание явно составлено для малограмотного контингента. Но нам это не важно.

Вроде обещали, что работать будет просто по номеру телефона, как мы это любим. Но можно войти еще и через Одноклассников, и через Gmail. И тут начинается самое интересное. Если зарегистрироваться через номер  телефона, приложение стандартно пришлет код смской (код может быть четырех- или шестизначный). Если же войти через Gmail, нужен только логин/пароль. При этом, контакты, установившие ТамТам, в списке контактов не появятся. И возможности написать им не будет.

Ну и черт с ним. Можно же почитать интереснейшие каналы.

Кажется, все так же, как и в старом добром Телеграм.

Хорошо. Со входом через Гугл провалилось (аккаунта Одноклассников у меня нет). Попробуем подключиться через номер телефона. К сожалению, друзья не очень жаждали участвовать в таком эксперименте, у некоторых просто не заработало приложение, так что пришлось взять два смартфона с разными аккаунтами и симками и попробовать переписку на них.

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

Удаляем ТамТам, ставим заново, регистрируемся по номеру телефона. Теперь в списке контактов приложения появляется один собеседник – я.

Еще немного танцев с бубном. Чистая регистрация. Еще один чистый смартфон. Итог все тот же: я не могу написать другу, который есть у меня в контактах, и есть в ТамТам, а он не может написать мне. Мы можем лишь приглашать друг друга в какой-то там ТамТам.

А может просто надо покопаться в настройках? К счастью, здесь их практически нет, по сравнению с тележкой.

В общем, Оби-Ван так и не смог связаться с Энакином, и тот так и остался в темном болоте.

Итог: все просто, понятно, но ничего не работает. Достойная замена Telegram! (нет)

 

Little Big выпустили новую песню. Про гипнотанцора

Карантинные меры продлевают.

Штрафы ужесточают.

Самоизоляцию в Москве продлили до июня.

Теперь в общественном транспорте и магазинах нужно обязательно носить маску и перчатки.

Что делать?

Конечно, слушать музыку! Она и выздороветь, и жить помогает,

Группа Little Big аккурат в пятницу 8 мая, накануне Дня Победы выпустила новый трек. Питерские ребята, играющие поп-рейв, не поехали в этом году на «Евровидение», организовали у себя на ютуб-канале собственное «Карантиновидение», лидер коллектива Илья Прусикин начал писать картины, но о поклонниках и творчестве ребята не забыли.

Добрыня Ильич и Ильич! Занимаемся добычей песка. Добрыня сказал- Музыка, как лекарство, нужно человеку когда он болен, но в песке нуждается каждый и в здравии и в болезни. Поверь мне папа мы станем песочными магнатами, главное инвестируй в лопатку и ведерко, а дальше лярды польются рекой . Какой же умный растёт!!!

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

Little Big - Hypnodancer.

Трек можно включить, когда грустно, и просто подвигаться в удовольствие. Тем не менее, скорее всего, Hypnodancer («Гипнотанцор») — потенциальный хит. Клип на песню уже появился в сети.

LITTLE BIG - HYPNODANCER (Official Music Video).

Кстати, в клипе участники изучают номер "Комсомольской правды" с обложкой про себя.

Кстати, на кадрах видна "Комсомольская правда"

ТЕКСТ ПЕСНИ HYPNODANCER

I don't want to hear you say

I will go another way

Should I go or should

I stay If I have to go away

Least we'll go another way

Can I plan to slip away

ПРИПЕВ

Hypnodancer (Hey! Hey!)

Hypnodancer (Hey! Hey!)

Hypnodancer (Hey! Hey!)

Go hypnodancer Dancer (Hey! Hey!)

Hypnodancer (Hey! Hey!)

Hypnodancer (Hey! Hey!)

Go hypnodancer

I just tried to find my way

Through whatever, come what may

I will do it anyway

It's just little game we play

If feels good to get away

There is nothing else to say

ПЕРЕВОД

Я не хочу слышать твои речи.

Я пойду другим путем.

Нужно ли мне идти или остаться?

Если я должна уйти,

По крайней мере, мы пойдём другим путём.

Могу ли я думать о том, как бы мне улизнуть?

Гипнотанцор! (Хей! Хей!)

Гипнотанцор! (Хей! Хей!)

Гипнотанцор! (Хей! Хей!)

Давай, гипнотанцор! Танцор! (Хей! Хей!)

Гипнотанцор! (Хей! Хей!)

Гипнотанцор! (Хей! Хей!)

Давай, гипнотанцор!

Я пыталась найти свой путь

Через что угодно, несмотря ни на что.

Я все равно это сделаю.

Это для нас просто небольшая игра,

Хорошо, когда сбегаешь,

И больше нечего сказать.

КСТАТИ

В новом клипе Little Big грабят подпольные казино под гипнозом, прикрываясь обложкой «КП»

На самоизоляции питерская группа Little Big действует максимально грамотно.

Не забывает подогревать интерес к себе (подробности)


Смотрите также