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
11058
Россия, Москва
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
11058
Россия, Москва

(Ещё 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
11058
Россия, Москва
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
11058
Россия, Москва
Ссылка-то правильная, вот форум её вставил через одно место. :-( Скопируйте как текст в адресную строку браузера и всё. Ну или гуглом.
Странно что на новом канале не дают права оператора. Ну тут уж как серверы сети настроены (не помню такой настройки, но может и есть).
Учтите что за массовую рассылку незапрошенных инвайтов Вас могут забанить как спамера.

 Профиль  
                  
 
 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  След.

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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