2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение11.03.2017, 23:44 


05/09/12
2587
Сделал бот-интерфейс к своему интерпретатору. Пока работает в 4 мессенджерах: Gitter, Telegram, Slack и IRC. Везде кроме гиттера боты реагируют не только на публичные, но и на приватные сообщения, для каждой комнаты или приватного канала создается отдельная сессия со своим пространством имен. Везде кроме IRC есть возможность прочитать историю сообщений.

Основная страница приложения, пробуждающая ботов: https://liscript.herokuapp.com/
Краткое описание языка: https://github.com/Ivana-/Liscript-GUI- ... t-overview
Текст стандартной библиотеки (не сделал отдельного описания функций, но из текста понятно что есть и чего нет): https://github.com/Ivana-/Liscript-GUI- ... y.liscript

Что скажете, господа? Что добавить, что убрать, что улучшить?

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение12.03.2017, 11:52 
Заслуженный участник


27/04/09
28128
Интересно, хотя никаких предложений по поводу самого языка или бота нет. Разве что вы могли бы добавить в канале на Freenode тему, в которой была бы ссылка на проект?

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение12.03.2017, 15:52 


05/09/12
2587
Дело в том, что в некоторых мессенжерах (ИРЦ, Телеграм, Слак) я до момента написания этого бота вообще не был зарегистрирован, и не знаю их возможностей. Локального ИРЦ-клиента я не ставил, всегда захожу из веб-интерфейса, и каждый раз начинается с чистого листа - история сообщений пуста. Я подозревал, что канал динамически создается каждый раз при заходе на него, и очищается при выходе последнего онлайнового пользователя. И я даже не предполагал, что можно что-то привязать вечное к нему, например какую-нибудь ссылку.

ЗЫ ИРЦ был первым мессенжером, в котором я реализовал бота. Но ограничения максимум 512 символов, отсутствие многострочных сообщений, тегов форматирования кода и т.п. делают РЕПЛ на нем менее удобным, чем в остальных мессенжерах. Единственное, что мне там нравится - это скорость отклика и возможность повтороной отправки с редактированием последних сообщений по стрелке вверх (как в обычной консоли), а не просто редактирование последнего посланного (как во всех остальных мессенжерах) - так удобнее повторять команды с исправлением ошибок.

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение12.03.2017, 16:16 
Заслуженный участник


27/04/09
28128
_Ivana в сообщении #1199470 писал(а):
Я подозревал, что канал динамически создается каждый раз при заходе на него, и очищается при выходе последнего онлайнового пользователя.
Да, для IRC это так. Я просто подумал, что ваш бот там находится постоянно. Если он входит-выходит слишком часто, тогда, конечно, возиться мало смысла. Tсть какие-то механизмы с приглашением бота ChanServ на канал, но я сам плохо разбираюсь.

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение12.03.2017, 16:28 


05/09/12
2587
arseniiv, сервер приложений, на котором я опубликовал этот проект, предоставляет ограниченный набор бесплатных часов в месяц. И для экономии часов сам завершает работу приложения, если к его веб-странице не было обращений в течение получаса. Это очень удобно, единственный минус - если надо общаться с ботом долго, то раз в полчаса надо рефрешить основную веб-страницу приложения (что не очень сложно). После засыпания все локальные данные всех сессий бота теряются, что в моем случае работает как сборщик мусора - если кто-то создал в сессии переменную - список на миллион элементов, то при засыпании это все очищается.

Насчет принятия ботом приглашений в другие каналы - скорее всего АПИ библиотек позволяет реализовать это (по крайней мере, в части перечисленных мессенжеров), но я пока не думал об этом. Мне кажется логичным локализация бота в своем отдельном канале плюс реакция на личную переписку, хотя может и ходьба по другим каналам будет не лишняя. Кто бы приглашал еще :lol:

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение12.03.2017, 23:40 
Заслуженный участник


20/08/14
11785
Россия, Москва
arseniiv в сообщении #1199482 писал(а):
Tсть какие-то механизмы с приглашением бота ChanServ на канал, но я сам плохо разбираюсь.
Много лет сижу в IRC, в том числе админом. Предлагаемый механизм не сработает - серверные боты (как ChanServ) зайдут на канал при входе туда первого юзера и выйдут с канала при уходе последнего (и канал будет закрыт, с сохранением всех настроек канала, но не истории сообщений, она вообще не хранится). В этом одна из проблем разрегивания каналов если туда долго никто не заходит, серверные боты не спасают, приходится регулярно заводить своих или вообще постоянно висеть.

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

PS. По самому боту мне сказать нечего, даже не смотрел.

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение12.03.2017, 23:52 


05/09/12
2587
Спасибо за разъяснения по IRC. Собственно, история сообщений данного канала не является важной. По поводу двух ботов - бесплатные часы работы даются общие на все приложения, опубликованные на данном аккаунте heroku - поэтому хоть 10 приложений, часы будут общие, и засыпание их экономит. Конечно можно завести 2 бесплатных аккаунта на данном ресурсе (от лица разных пользователей), но это уже другой вопрос, и heroku может как-то ограничивать такие попытки.

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

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение13.03.2017, 10:10 
Заслуженный участник


27/04/09
28128

(Ещё IRC)

Dmitriy40 в сообщении #1199662 писал(а):
Тут есть тонкость, не все сети разрешают несколько сессий с одного IP.
Кажеся, Freenode к этому относится спокойно: я как-то сидел из клиента для виндовса и в виртуальной машине клиента для Ubuntu. Соединение с обоими не сбрасывалось.

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение13.03.2017, 18:27 
Заслуженный участник


20/08/14
11785
Россия, Москва

(Ещё IRC)

arseniiv в сообщении #1199794 писал(а):
Dmitriy40 в сообщении #1199662 писал(а):
Тут есть тонкость, не все сети разрешают несколько сессий с одного IP.
Кажеся, Freenode к этому относится спокойно: я как-то сидел из клиента для виндовса и в виртуальной машине клиента для Ubuntu. Соединение с обоими не сбрасывалось.
А в той сети что сижу я - ограничение на максимум 3 сессии с одного IP. Кажется много, но уже двумя клиентами постоянно не посидишь из-за угрозы дисконнекта или сплита (разделения сети на независимые кусочки), при нём оба клиента успеют повторно зайти ещё до слёта предыдущих сессий на сервере и всего их на короткое время (несколько минут!) станет 4 - могут и забанить, автоматически, замучаешься разбираться если нет возможности оперативно сменить IP. К счастью такое если и случается, то редко, далеко не при каждом дисконнекте или сплите. Так что не всегда две сессии безопасно, даже если не вылезает за ограничения.

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение13.03.2017, 21:19 


05/09/12
2587
Сначала я было удивился, что участники обсуждают и пробуют IRC реализацию, с учетом ее ограничений. Но потом вспомнил, что это древняя заслуженная технология, и участники данного форума имеют тенденцию быть такими же, нежели школьниками с модными смартфонами (у меня, например, его нет - в телеграм захожу с десктопного или вэб клиента). А во всяких этих новых телеграмах/слаках я и сам то зарегистрировался только ради тестирования, и там нужно сначала заводить себе аккаунт, а для захода на канал получать инвайт (или автоссылку на него) :D Ну в гиттере я уже был зарегистрирован, поскольку аккаунт на гитхабе есть, и состоял в группах по хаскелю, джаве и т.п.

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение13.03.2017, 22:51 


05/09/12
2587
Прошу помощи специалистов по IRC. Хочу сделать функциональность, чтобы бота могли приглашать на другие каналы. Создал второй тестовый канал, зашел на него, не понимаю как отправить инвайт-сообщение выбранному пользователю. Насколько я понял, все команды посылаются как сообщения ChanServ с определенными ключами. Нашел только kick с заданием имени пользователя, которого надо упомянуть, и invite - для запроса инвайта СЕБЕ на выбранный канал, без указания имени адресата.

Как вообще в IRC принято приглашать пользователей с одних каналов на другие? Через упоминание kick? Чтобы мне знать, на какие команды реагировать. И еще придет ли мне kick, если я не зашел на этот канал?

ЗЫ параллельно придется узнавать как это организовано в других мессенжерах.

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение14.03.2017, 00:58 
Заслуженный участник


20/08/14
11785
Россия, Москва
Kick - это удалить с канала указанного юзера. Надо обладать правами на канале. Обычно на такое очень обижаются. :mrgreen:
Пригласить юзера на канал - invite <кого> <куда>. Куда - это имя канала куда пригласить. И обычно тоже надо обладать правами на канале. И это не требование, а просьба, клиент может её игнорировать. А может и автоматически зайти куда просят (обычно новички, потом эту функцию запрещают чтобы поменьше спама было и не вылезти за ограничение на количество одновременно открытых каналов).
Если прав нету, как у большинства обычных юзеров, то пригласить никак. Разве что просто текстом написать приватное сообщение (команды msg/privmsg/query/notice <кому> <текст>). Но и это тоже может быть запрещено у клиентов, правда такое уже редкость.
И нет, далеко не все команды посылаются как сообщения ChanServ-у, ему только лишь команды управлениям каналами. Как и например NickServ-у только команды управления никами.
PS. Списки команд IRC есть много где в сети, начиная прямо с вики - https://ru.wikipedia.org/wiki/Список_IRC-команд

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение14.03.2017, 01:47 


05/09/12
2587
Dmitriy40 спасибо, буду пробовать. Мне всего-то надо с тестового канала обладать всеми правами, чтобы посылать данные команды. Но даже на созданном мной канале я ими не обладаю.

ЗЫ ссылка ваша на вики конечно условная, но я попробую сам погуглить.

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение14.03.2017, 04:45 
Заслуженный участник


20/08/14
11785
Россия, Москва
Ссылка-то правильная, вот форум её вставил через одно место. :-( Скопируйте как текст в адресную строку браузера и всё. Ну или гуглом.
Странно что на новом канале не дают права оператора. Ну тут уж как серверы сети настроены (не помню такой настройки, но может и есть).
Учтите что за массовую рассылку незапрошенных инвайтов Вас могут забанить как спамера.

 Профиль  
                  
 
 Re: Бот - интерпретатор лиспоподобного ЯП в разных мессенжерах
Сообщение14.03.2017, 23:37 


05/09/12
2587
Dmitriy40 спасибо, вроде все работает - получилось таки создать канал с правами опа, пригласить на него бота по инвайту, бот приходит и отвечает. В ближайшее время обновлю приложение на сервере, можно будет инвайтить бота в любые свои каналы (если вы там оп конечно :-) )

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

-- 14.03.2017, 23:48 --

PS и Kick бота с канала тоже работает :-) Бот не обижается :mrgreen:

-- 14.03.2017, 23:58 --

PPS наконец-то дошло: это же линукс-вэй, интерфейс командной строки и прочие прелести середины прошлого века, нашел команду JOIN. Я то человек, измученный GUI, мышами, контекстным меню по правой кнопке и т.п. А тут такой бескомпромиссный терминальный интерфейс :o Но теперь вроде все встало на свои места и окончательно получается. Еще раз спасибо.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Модератор: Модераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group