Rate limits DM messages to your bot to prevent users from trigger custom events too often. For example you can use it with a DM support bot to prevent users from spamming the support channel.
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
const event = context.params.event;
const userId = event.author.id;
const key = `rate_limit_${userId}`;
const hasMessagedRecently = await lib.utils.kv['@0.1.16'].get({key});
if (hasMessagedRecently) {
await lib.discord.users['@0.1.4'].dms.create({
recipient_id: userId,
content: `Message not sent because you're messaging too much. Please wait a minute and try again`,
});
} else {
await lib.discord.users['@0.1.4'].dms.create({
recipient_id: userId,
content: `Message sent!`,
});
}
// Store user key
await lib.utils.kv['@0.1.16'].set({
key: key,
value: true,
ttl: 60, // 1 minute
});