У меня есть бот в 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
к сохраненным сообщениям, и, если строки найдены, отобразите их.
Звучит нормально, но может ли кто-нибудь просмотреть его и, возможно, предложить совет? Я буду вынужден заставить слушателя выслушать любоговход в любой канал, верно? Альтернативы этому нет?