import { request } from "undici";
// Create a new client instance
-const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMessages, GatewayIntentBits.DirectMessages] });
+const client = new Client({ intents:
+ [
+ GatewayIntentBits.Guilds,
+ GatewayIntentBits.MessageContent,
+ GatewayIntentBits.GuildMessages,
+ GatewayIntentBits.DirectMessages
+ ]
+});
// `autofeur_db` service
export const DB = process.env.DB || "http://localhost:3000";
]
const ignoredEveryoneChannels = [
- "1055130476395909210"
+ "1055130476395909210"
]
-let counter = 0;
+let messageReplyCounter = 0;
const messageAction = async (message) => {
if (message.author.bot) return;
- counter += 1;
- console.log("counter is at", counter);
- let shouldReplyByCounter = counter >= 60;
- let shouldReply = (shouldReplyByCounter || specialChannels.includes(message.channelId) || message.guild == null);
+ messageReplyCounter += 1;
+ console.log("counter is at", messageReplyCounter);
+
+ let currentTimestamp = Date.now();
+ let lastMessageTimestamp = await message
+ .channel
+ .messages
+ .fetch({
+ limit: 2,
+ cache : false
+ })
+ .last()
+ .createdTimestamp;
+
+ let shouldReplyByTimestamp = currentTimestamp - lastMessageTimestamp >= 3600;
+ let shouldReplyByCounter =
+ messageReplyCounter >= Math.floor(Math.random() * 75) + 35;
+ let shouldReply = (
+ shouldReplyByTimestamp ||
+ shouldReplyByCounter ||
+ specialChannels.includes(message.channelId) ||
+ message.guild == null
+ );
if (shouldReply) {
- let oltCounter = counter;
- if (shouldReplyByCounter) {
- counter = 0;
+ let oldCounter = messageReplyCounter;
+ if (shouldReplyByTimestamp || shouldReplyByCounter) {
+ messageReplyCounter = 0;
}
const cleanText = sanitizeWord(message.cleanContent);
if (countChars(cleanText) > 0) {
message.reply(response);
}
} else if (shouldReplyByCounter) {
- counter = oltCounter;
+ messageReplyCounter = oldCounter;
}
}