You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js实现Twitch超时用户消息删除,如何限制仅指定账号触发逻辑

你只需要在原有逻辑的最外层增加发送者用户名校验,仅允许用户名为User Timed Out的指定Webhook账号触发删除流程即可修复漏洞。

修改后的完整代码如下:

discordClient.on('messageCreate', async (message) => {
    async function dt() {
        // 新增发送者身份校验,非指定账号直接跳过逻辑
        if (message.author.username !== 'User Timed Out') return
        if (message.content.includes('has been timed out for')){
            const user = message.content.split(" ")[1]
            const time = message.content.split(" ")[7]
            if (message.content === `** ${user} has been timed out for ${time} seconds.**`) {
                const messages = await message.channel.messages.fetch({
                    limit: 20 
                })
                const toDeleteMsgs = messages.filter(m => m.author.username.toLowerCase() === user.toLowerCase())
                await message.channel.bulkDelete(toDeleteMsgs)
                console.log('cleared messages')
            }
        }
    }
    try {
        await dt()
    } catch (error) {
        console.error('处理超时删除逻辑出错:', error)
    }
});

修改说明:

  • 新增的身份校验会直接过滤所有非指定Webhook账号发送的消息,普通用户即使发送完全匹配格式的内容也不会触发删除逻辑,彻底解决恶意触发的安全问题
  • 优化了原有代码混合async/await与then的写法,逻辑更清晰易维护
  • 修复了原有错误捕获写法错误的问题,新增异常日志打印方便后续排查问题
  • 调整了内部变量名,避免和外层的message变量产生命名冲突

内容的提问来源于stack exchange,提问作者Dancing Potato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:54:04