Skip to content

Commit

Permalink
Make @replies expire after 10 uses
Browse files Browse the repository at this point in the history
  • Loading branch information
earldouglas committed Aug 12, 2016
1 parent 69a3805 commit 2600a48
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 16 deletions.
10 changes: 7 additions & 3 deletions lib/listeners/message/auto-reply.js
Expand Up @@ -56,7 +56,7 @@ function messageListener(db, from, channel, message) {
delete replies[index]
}

replies[index] = {name:name, regex: regex, flags: flags, reply: reply};
replies[index] = { count: 10, name:name, regex: regex, flags: flags, reply: reply, };
messages.push({ to: channel, message: from + ': OK - auto-reply "' + name +'" added.' });
} else {
messages.push({ to: channel, message: '@reply <name> /<regex>/[ig] <reply>'});
Expand All @@ -72,12 +72,16 @@ function messageListener(db, from, channel, message) {
var replies = initReplies(db,channel);
for (var i = replies.length - 1; i >= 0; i--) {
var regex = new RegExp(replies[i].regex,replies[i].flags);
var reply = replies[i].reply;
if (regex.exec(message)) {
messages.push({
to: channel,
message: reply
message: replies[i].reply,
});
replies[i].count = replies[i].count || 10;
replies[i].count = replies[i].count - 1;
if (replies[i].count <= 0) {
delete replies[i];
}
}
}
return messages;
Expand Down
39 changes: 26 additions & 13 deletions test/sectry_test.js
Expand Up @@ -136,11 +136,12 @@ describe('message listeners', function () {
}
);

var everyDayDb = function () {
var everyDayDb = function (n) {
return {
replies: {
'#test-channel': [
{
count: n,
flags: '',
name: 'every-day',
regex: 'everyday',
Expand All @@ -158,19 +159,19 @@ describe('message listeners', function () {
message: '@reply every-day /everyday/ EVERYDAY'
},
{
db: everyDayDb(),
db: everyDayDb(10),
from: 'test-user', channel: '#test-channel',
messages: [ { message: 'test-user: OK - auto-reply "every-day" added.', to: '#test-channel' } ]
}
);

test('auto-reply',
{
db: everyDayDb(),
db: everyDayDb(10),
from: 'test-user', channel: '#test-channel', message: '@reply'
},
{
db: everyDayDb(),
db: everyDayDb(10),
messages: [
{ message: '@reply <name> /<regex>/[ig] <reply>', to: '#test-channel' },
{ message: '@reply delete <name>', to: '#test-channel' },
Expand All @@ -181,20 +182,32 @@ describe('message listeners', function () {

test('auto-reply',
{
db: everyDayDb(),
db: everyDayDb(10),
from: 'test-user', channel: '#test-channel', message: 'everyday'
},
{
db: everyDayDb(),
db: everyDayDb(9),
messages: [ { message: 'EVERYDAY', to: '#test-channel' }, ]
}
);

var notEveryDayDb = function () {
test('auto-reply',
{
db: everyDayDb(1),
from: 'test-user', channel: '#test-channel', message: 'everyday'
},
{
db: { replies: { '#test-channel': [] } },
messages: [ { message: 'EVERYDAY', to: '#test-channel' }, ]
}
);

var notEveryDayDb = function (n) {
return {
replies: {
'#test-channel': [
{
count: n,
flags: '',
name: 'every-day',
regex: 'everyday',
Expand All @@ -211,36 +224,36 @@ describe('message listeners', function () {
from: 'test-user', channel: '#test-channel', message: '@reply every-day /everyday/ NOT-EVERYDAY'
},
{
db: notEveryDayDb(),
db: notEveryDayDb(10),
messages: [ { message: 'test-user: OK - auto-reply "every-day" added.', to: '#test-channel' }, ]
}
);

test('auto-reply',
{
db: notEveryDayDb(),
db: notEveryDayDb(10),
from: 'test-user', channel: '#test-channel', message: 'everyday'
},
{
db: notEveryDayDb(),
db: notEveryDayDb(9),
messages: [ { message: 'NOT-EVERYDAY', to: '#test-channel' }, ]
}
);

test('auto-reply',
{
db: notEveryDayDb(),
db: notEveryDayDb(10),
from: 'test-user', channel: '#test-channel', message: '@reply delete ED'
},
{
db: notEveryDayDb(),
db: notEveryDayDb(10),
messages: [ { message: 'test-user: Sorry - auto-reply "ED" not found.', to: '#test-channel' }, ]
}
);

test('auto-reply',
{
db: notEveryDayDb(),
db: notEveryDayDb(10),
from: 'test-user', channel: '#test-channel', message: '@reply delete every-day'
},
{
Expand Down

0 comments on commit 2600a48

Please sign in to comment.