Message Reactions in Telegram

Ok, I was looking where to share, and recall I still pay for this blog’s hosting monthly. So I deceided to drop it here, just in case someone will ever find this via Google and say thanks.

Situation: I have a Telegram bot created 5-6 years ago for testing and I’ve used it to develop some logic. It works. I register new bot for production run via BotFather, put all same settings and new bot is not getting any message reactions, despite it get all other notifications – topics created, files uploaded, etc…
I am using Telegram via Python library, so I am not polling updates manually, but have a thread loop which callbacks my handlers on each message received by bot. I start reading API docs and discover that

Specify an empty list to receive all update types except chat_member, message_reaction, and message_reaction_count (default). If not specified, the previous setting will be used.

Looks like this is default behaviour and I need find a way to pass at least message_reaction to getUpdates to start polling those. I even forked the library, when another idea came to my mind: I can quickly update the last settings:


$ ipython

import telepotpro
from server.settings import BOT_TOKEN
bot = telepotpro.Bot(BOT_TOKEN)
needed_updates = [ "message", "edited_message", "channel_post", "message_reaction", "message_reaction_count", "chat_member", ]
bot.getUpdates(allowed_updates=needed_updates)

This made my bot set to receive only specific set of updates, but more important – it started to receive message_reaction type of events, which I was interested in.

Blog Update

Мой блог указан, везде где только можно, но актуальной информации с 2012 года тут не появлялось. Это как-бы не очень хорошо, надо вернуться обратно к практике делать здесь небольшие технические заметки о ruby и не только. Интересно, заходил ли сюда кто-нибудь из старых подписчиков или все забыли и забили?

Листинг директорий на руби

Было дело, надо в одном проекте выводить список файлов лежащих в определенной директории, с возможностью их скачать, как говориться в натуральную величину. Это был мой первый кусочек кода написанный на ruby, а поскольку rails для меня тогда еще были не доступны, их фишками я не пользовался. Встречайте, чистый ERB:


<%
vendors = Hash.new { |hash, key| hash[key] = Array.new }
Dir.open('public/files').each do |file|

    # Заполняем хэш vendors файлами из директории, перебирая по очереди каждый из них
    next if file[-4..-1] != '.pdf'
    next if file =~ /^..?$/
    file.gsub!('.pdf', '')
    f = file.split(' ')

    # Разбиваем имя файла, получая необходимые логические части Прозводитель и Модель. 
    # Заполняем хэш полученными значениями.

    model = f[-1] # Пробельчик чик-чик
    vendor = f[0..-2].join(' ')
    vendors [vendor] << model
end
%>

<% for v in vendors.keys.sort do %>

<h2><%= v ></h2>
<ul><% for m in vendors[v].sort do %>
<li><a href=”/files/<%= v + ‘ ‘ + m + ‘ .jpg’ %>” target=”_blank”><%= m %>

<% end %>


<% end %> 

2 April 2009

Как видите, на Ruby можно тоже писать коряво, как на PHP 🙂

Project Management Step 1

Обнаружил в драфтах свою статью. Как-то получилось, что она не была опубликована своевременно, а сейчас я даже не знаю, что туда можно дописать. Поэтому публикую as-is, вдруг кому-то покажется интересным:

Сейчас популярно стали всякие Management-ы. Прямо как грибы после дождя растут: то time management, то money management, даже офис management встречается. А что люди в это понятие вкладывают? Просто умение организовать что либо – процесс работы, финансы. На мой взгляд всем этим management-ам адекватнейшим переводом будет “управление”. Вот и я столкнулся с проблеммой управления. Хоть у нас и не очень большая фирма, мы связаны с заказчиками, freelancer-ами, внешними сотрудниками, а значет без эффективного управления проектами организация данной связи может создать узкое место в построении бизнеса.
Вот сегодня, я и решил слегка улучшить внутриофисную коммуникацию. Ну, вернее не сразу улучшить, а посмотреть на перспективы. Для управления большинством проектов достаточно ручки и листочка бумаги, однако если в офисе люди работают в разное время, то короткими записками не обойтись, а цеплять к почте файлы по 60Мб достаточно муторно. Обратив свой взор на рынок програмного обеспечения для управления проектами, я понял что подобные приложения сейчас непишут лишь ленивые. Рынок переполнен разнородной информацией по данному вопросу и поэтому я обратился к ручке с бумажкой, чтобы сформулировать свои требования. Итого вышло:

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

Посоветовавшись с коллегами-программистами, я выяснил что есть хороший пакет написанный на языке C# для MS SQL Server-a. Gemini отличается от многих подобных продуктов тем, что предлагает не “вомпу в мешке”, а вполне лицензионную версию с ограничением на 10 пользователей. Чего нам в принципе достаточно на первое время.
Потратив кусочек своего рабочего времени на установку компонент: версия 2.1.1 потребовала .NET Framework 2.0 и MS SQL Server 2000, я принялся за борьбу с инсталлятором. Не смотря на то, что само приложение полностью локализованно, инсталлятор отличается исключительной англоязычностью, как интерфейса, так и мануала. Без бубнов конечно не обошлось, но в конце концов – все заработало очень сносно.

Дата написания: 27 Июня 2007 года.

MongoDB for Developers

Я пишу этот пост, потому что нахожусь в некотором экстазе от онлайн курса M101: MongoDB for Developers. Если вы вообще смотрите в мир NoSQL, то думаю это самое то, что нужно для того чтобы идти в ногу со временем. Вообще, я заметил что за прошедшие пару лет с окончания вуза я отучился учиться… чтоже Coursera, Udacity и другие ресурсы с Class Central помогут мне вернуться в строй.

Железные траблы Blackmagic

Вот, сегодня на работе на пустом месте нарисовались проблемы с картой для HDMI Capture. Нужно мне было поднять Blackmagic Intensity Pro для работы под Ubuntu 10.10 i386.

Пошел на сайт, скачал оттуда свежий пакет софта. Поставил desktopvideo-8.6.1-i386.deb и MediaExpress-3.0.3-i386.deb.

sudo dpkg -i desktopvideo-8.6.1-i386.deb
sudo dpkg -i MediaExpress-3.0.3-i386.deb

Все встало без проблем, а дальше никуда. Любая попытка запустить софт выливается в “No Blackmagic devices were found.”

В конце концов нашел солюшен, которым спешу поделиться с вами:

$ sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vmalloc=256M"
$ sudo update-grub
$ sudo reboot