Как стать автором
Обновить

Комментарии 35

require 'telegram/bot'

базара нет, в остальные 9 строк можно и уложиться
*заменить питон на руби*
image
Плагиатим в 8 строк на python xD
from twx.botapi import TelegramBot
token = '<>'
bot = TelegramBot(token)
while True:
    updates = bot.get_updates().wait()
    for update in updates:
        if update.message.text.startswith('/start'):
            bot.send_message(update.message.chat.id, 'test message body')

Протокол в исходнике норм читаем, github.com/datamachine/twx.botapi
7 строк на Ruby :)
require 'telegram/bot'
token = '118997426:AAFVFtYa15Z7ckyDUIHb578NazgepL4kmU8'
Telegram::Bot::Client.run(token) do |bot|
  bot.listen do |message|
     bot.api.sendMessage(chat_id: message.chat.id, text: "Hello, #{message.from.first_name}") if message.text == '/start'
  end
end

6 строк, с token не мухлюем! :)
from twx.botapi import TelegramBot
token = '<>'
with TelegramBot(token) as bot:
    while True:
        for update in bot.get_updates().wait():
                bot.send_message(update.message.chat.id, 'test message body') if update.message.text.startswith('/start'):

Если в api get_updates сделать генератором, хорошая идея кстати, то до 5 сократить можно. И в ruby два end убрать, будет по 5, таки ниже правы :)
5 строк на Ruby :)
require 'telegram/bot'
token = '<>'
Telegram::Bot::Client.run(token) do |bot|
  bot.listen { |message| bot.api.sendMessage(chat_id: message.chat.id, text: 'Hi!') if message.text == '/start' }
end


4 строки на Ruby :)
require 'telegram/bot'
token = '<>'
Telegram::Bot::Client.run(token) { |bot| bot.listen { |message| bot.api.sendMessage(chat_id: message.chat.id, text: 'Hi!') if message.text == '/start' } }

Вот это интереснее статьи :) Я думаю :) Здесь надо было не «4 строки на Ruby :)», а «4 строки на Ruby :P»
P.S. почему 4, там же 3? Скобки скобки так не любимые питонистами, эх :(
Вы правы, 3, да:)
Короче, 2 строки на Ruby (и это всё содержание статьи :):
require 'telegram/bot'
Telegram::Bot::Client.run('AAFVFtYa15Z7ckyDUIHb578NazgepL4kmU8') { |bot| bot.listen { |mes| bot.api.sendMessage(chat_id: mes.chat.id, text: 'Hi!') if mes.text == '/start' } }
4 python
from twx.botapi import TelegramBot
token = '<>'
with TelegramBot(token) as bot:
    while True: [lambda update: bot.send_message(update.message.chat.id, 'test message body') if update.message.text.startswith('/start') else None for update in bot.get_updates().wait()]

до 3-х думаю :)
3 python, мир дружба? :)
from twx.botapi import TelegramBot
token = '<>'
while True: [lambda update: TelegramBot(token).send_message(update.message.chat.id, 'test message body') if update.message.text.startswith('/start') else None for update in TelegramBot(token).get_updates().wait()]

Да, отлично:) короче никак:) 1 на либу, 1 на токен, 1 на логику:)
А я вот понял, что без вас я бы остановился на 6 строках :) Конкуренция — двигатель, да :)
На ruby приятнее выглядит и читается ;)
Потому что пришлось извратиться ибо в python нет скобок, конечно так писать не надо :) Вы сравните первые 8 python строк и 10 ruby.
у меня опечатка кстати:
bot.send_message(update.message.chat.id, 'test message body') if update.message.text.startswith('/start'):

а верно:
bot.send_message(update.message.chat.id, 'test message body') if update.message.text.startswith('/start') else pass
Простите, но что из примера выше не понятно? Я поясню, если есть еще вопросы.
Возможно вы правы, но пост планировался как Hello World, входная точка, для которой не требуются подробные теоретические описания. Но это мое мнение, почему так и сделал. В следующий раз буду описывать гораздо более подробно. Спасибо.
Мне кажется ссылки на гитхаб было бы достаточно. Там и поинформативней.
Я думаю вопрос не в понятности, а в том, что инетересно было бы почитать про разработку библиотеки, подводные камни какие-то итп.
То, что элементарный бот при использовании библиотеки занимает пару строк (а в сложном все идет на откуп фантазии автора) и так понятно в общем-то.
да нет там никаких подводных камней. API простой и прозрачный — писал для него .net либу, вообще все отлично.
Никто и не утверждает, что есть. Я просто говорю, что статья аля «Hello World» — это как-то несерьезно, тем более что подобное что-то было уже.
было и не раз. по моим подсчётам на хабре сейчас минимум 5 статей начинающихся с фразы «захотел создать бота» :)
Да как бы, использование библиотеки — это конечно хорошо, но не интересно.
Да тут как бы статья вообще странная. Я такого бота на php могу вообще в две строчки написать без каких либо сторонних библиотек.
$gram=json_decode(file_get_contents('php://input'),true);
file_get_contents('https://api.telegram.org/botID:KEY/sendMessage?disable_web_page_preview=1&chat_id='.$gram['message']['chat']['id'].'&text='.urlencode('Привет'.$gram['message']['chat']['last_name']));


PS. И вообще странно, я 2 месяца назад как бы делал статью через 2 дня после выхода бота. Там был Hello World и полная инструкция.
Боты в телеграме может осилить даже тот, кто вообще никогда не программировал. Может хватит уже по нему писать одинаковые статьи? (обращение авторам)
вот это уже покруче :)
Спасибо автору. Для моего уровня это было полезно и я смог применить информацию из статьи на практике. Предыдущие статьи на аналогичную тему мною были упущены…
Пожалуйста не называйте гемы c префиксом/суффиксом 'ruby'. Оно и так очевидно что рубишный гем это библиотека для руби.
Для сокращателей кода — если вы делаете одну гигантскую строку, это вовсе не значит, что код стал короче. Содержимое скобок обозначающих блок кода должно идти отдельной строкой, тоже самое касается выражений под управляющими операторами вроде while, if и for.
Не всегда.
Статья хоть и бестолковая, но благодаря ей, я узнал, что telegram запустил ботов, а то пропустил прошлую темы о запуске ботов.

Поэтому спасибо!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории