Allow multiple users to do !alert without overriding each other
parent
034c12b2aa
commit
949a5efdb2
|
@ -169,8 +169,8 @@ class Thread {
|
|||
}
|
||||
|
||||
if (this.alert_id) {
|
||||
await this.setAlert(null);
|
||||
await this.postSystemMessage(`<@!${this.alert_id}> New message from ${this.user_name}`);
|
||||
await this.deleteAlerts();
|
||||
await this.postSystemMessage(`${this.alert_id} New message from ${this.user_name}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -449,14 +449,65 @@ class Thread {
|
|||
* @param {String} userId
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async setAlert(userId) {
|
||||
async addAlert(userId) {
|
||||
let alerts = await knex('threads')
|
||||
.where('id', this.id)
|
||||
.select('alert_id')
|
||||
.first();
|
||||
alerts = alerts.alert_id;
|
||||
|
||||
if (alerts == null) {
|
||||
alerts = `<@!${userId}>`;
|
||||
} else {
|
||||
if (! alerts.includes(`<@!${userId}>`)) {
|
||||
alerts += ` <@!${userId}>`;
|
||||
}
|
||||
}
|
||||
|
||||
await knex('threads')
|
||||
.where('id', this.id)
|
||||
.update({
|
||||
alert_id: userId
|
||||
alert_id: alerts
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {String} userId
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async removeAlert(userId) {
|
||||
let alerts = await knex('threads')
|
||||
.where('id', this.id)
|
||||
.select('alert_id')
|
||||
.first();
|
||||
alerts = alerts.alert_id;
|
||||
|
||||
if (! (alerts == null)) {
|
||||
if (alerts.startsWith(`<@!${userId}>`)) { // we do this to properly handle the spacing between @s
|
||||
alerts = alerts.replace(`<@!${userId}> `, "");
|
||||
} else {
|
||||
alerts = alerts.replace(` <@!${userId}>`, "");
|
||||
}
|
||||
}
|
||||
|
||||
await knex('threads')
|
||||
.where('id', this.id)
|
||||
.update({
|
||||
alert_id: alerts
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async deleteAlerts() {
|
||||
await knex('threads')
|
||||
.where('id', this.id)
|
||||
.update({
|
||||
alert_id: null
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Promise<String>}
|
||||
*/
|
||||
|
@ -465,4 +516,4 @@ class Thread {
|
|||
}
|
||||
}
|
||||
|
||||
module.exports = Thread;
|
||||
module.exports = Thread;
|
|
@ -1,10 +1,10 @@
|
|||
module.exports = ({ bot, knex, config, commands }) => {
|
||||
commands.addInboxThreadCommand('alert', '[opt:string]', async (msg, args, thread) => {
|
||||
if (args.opt && args.opt.startsWith('c')) {
|
||||
await thread.setAlert(null);
|
||||
await thread.postSystemMessage(`Cancelled new message alert`);
|
||||
await thread.removeAlert(msg.author.id)
|
||||
await thread.postSystemMessage(`Cancelled your new message alert`);
|
||||
} else {
|
||||
await thread.setAlert(msg.author.id);
|
||||
await thread.addAlert(msg.author.id);
|
||||
await thread.postSystemMessage(`Pinging ${msg.author.username}#${msg.author.discriminator} when this thread gets a new reply`);
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue