Моя логика для функции .tell (уведомления) на моем IRC боте звучит? - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть бот в node.js, и мне интересно, какую логику я должен использовать для функции .tell.Цель этой функции - дать сообщение пользователям, которые не в сети.Итак, если john был недоступен на freenode.net/#foo и я набрал .tell john your mother was great last night, я хочу, чтобы бот сохранил это сообщение и отображал его всякий раз, когда john присоединяется к каналу.

Если john уже в канале, я хочу, чтобы бот сразу же отображал сообщение.

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

1. После того, как пользователь A наберет .tell john your mother was great, слушатель подберет шаблон /\.tell ([\w-]+) (.*)/ и сохранит переменную для сообщения (var msg, пользователь, который отправил сообщение (var from), и имя пользователя, которому следует отправить сообщение (var to). У меня также будет глобальная переменная, обозначающая имя канала и сеть сервера.

2. Я сохраню в mongodb строку, например:

to   from   message                 network       channel        delivered   time
--------------------------------------------------------------------------------
john meder  your mother was great   freenode.net  #foobar        0           (TS)
            last night

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

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

1 Ответ

1 голос
/ 09 декабря 2010

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

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

Т.е.

messages = {};
messages['freenode.net'] = {};
messages['freenode.net']['john'] = 1;

Возможно, это излишне, но если вы отслеживаете канал, который имеет много JOIN, вы можете найтиВы часто обращаетесь к MongoDB.

Мои два цента.

  • Кристиан
...