/[sudobot]/trunk/src/services/AFKEngine.ts
ViewVC logotype

Diff of /trunk/src/services/AFKEngine.ts

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 327 by rakin, Mon Jul 29 17:29:33 2024 UTC revision 417 by rakin, Mon Jul 29 17:30:08 2024 UTC
# Line 1  Line 1 
1    /**
2    * This file is part of SudoBot.
3    *
4    * Copyright (C) 2021-2022 OSN Inc.
5    *
6    * SudoBot is free software; you can redistribute it and/or modify it
7    * under the terms of the GNU Affero General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10    *
11    * SudoBot is distributed in the hope that it will be useful, but
12    * WITHOUT ANY WARRANTY; without even the implied warranty of
13    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14    * GNU Affero General Public License for more details.
15    *
16    * You should have received a copy of the GNU Affero General Public License
17    * along with SudoBot. If not, see <https://www.gnu.org/licenses/>.
18    */
19    
20  import { formatDistanceToNowStrict } from "date-fns";  import { formatDistanceToNowStrict } from "date-fns";
21  import { CommandInteraction, GuildMember, Message, User, Util } from "discord.js";  import { CommandInteraction, GuildMember, Message, Util } from "discord.js";
22  import DiscordClient from "../client/Client";  import DiscordClient from "../client/Client";
23  import MessageEmbed from "../client/MessageEmbed";  import MessageEmbed from "../client/MessageEmbed";
24  import AFK, { IAFK } from "../models/AFK";  import AFK, { IAFK } from "../models/AFK";
# Line 18  export default class AFKEngine extends S Line 37  export default class AFKEngine extends S
37          AFK.find().then(models => this.list = models).catch(console.error);          AFK.find().then(models => this.list = models).catch(console.error);
38      }      }
39    
40      findUsers(ids: string[], guild: string) {      findUsers(ids: string[]) {
41          return this.list.filter(afk => ids.includes(afk.user) && afk.guild_id === guild);          return this.list.filter(afk => ids.includes(afk.user));
42      }      }
43    
44      async removeUser(id: string, guild: string) {      async removeUser(id: string) {
45          let index = 0;          let index = 0;
46    
47          for await (const afk of this.list) {          for await (const afk of this.list) {
48              if (afk.user === id && afk.guild_id === guild) {              if (afk.user === id) {
49                  await afk.delete();                  await afk.delete();
50                  this.list.splice(index, 1);                  this.list.splice(index, 1);
51              }              }
# Line 36  export default class AFKEngine extends S Line 55  export default class AFKEngine extends S
55      }      }
56            
57      async toggle(message: Message | CommandInteraction, enable: boolean = false, status?: string) {      async toggle(message: Message | CommandInteraction, enable: boolean = false, status?: string) {
58          const afk = this.findUsers([message.member!.user.id], message.guild!.id);          const afk = this.findUsers([message.member!.user.id]);
59    
60          if (afk.length > 0) {          if (afk.length > 0) {
61              const mentions = afk[0].get("mentions")! as Array<MentionSchema>;              const mentions = afk[0].get("mentions")! as Array<MentionSchema>;
# Line 65  export default class AFKEngine extends S Line 84  export default class AFKEngine extends S
84                  count++;                  count++;
85              }              }
86    
87              await this.client.afkEngine.removeUser(message.member!.user.id, message.guild!.id);              await this.client.afkEngine.removeUser(message.member!.user.id);
88    
89              await message.reply({              await message.reply({
90                  embeds: [                  embeds: [
# Line 98  export default class AFKEngine extends S Line 117  export default class AFKEngine extends S
117          if (msg.author.bot)          if (msg.author.bot)
118              return;              return;
119    
120          const selfAFK = this.findUsers([msg.author.id], msg.guild!.id);          const selfAFK = this.findUsers([msg.author.id]);
121    
122          if (selfAFK.length > 0) {          if (selfAFK.length > 0) {
123              this.toggle(msg, false);              this.toggle(msg, false);
# Line 107  export default class AFKEngine extends S Line 126  export default class AFKEngine extends S
126          const mention = msg.mentions.members?.first();          const mention = msg.mentions.members?.first();
127    
128          if (mention) {          if (mention) {
129              const afkRecords: Array<IAFK> = this.findUsers([...msg.mentions.members!.keys()].slice(0, 3), msg.guild!.id).filter(afk => afk.user !== msg.author.id);              const afkRecords: Array<IAFK> = this.findUsers([...msg.mentions.members!.keys()].slice(0, 3)).filter(afk => afk.user !== msg.author.id);
130    
131              if (!afkRecords || afkRecords.length < 1) {              if (!afkRecords || afkRecords.length < 1) {
132                  return;                  return;

Legend:
Removed from v.327  
changed lines
  Added in v.417

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26