discord - 如何从特定用户名而不是 ID 中删除某些消息
问题描述
twitchClient.on('timeout', async (channel, username, user, reason, duration) => {
discordClient.on('message', async (message, messages) => {
async function deleteMessage() {
await discordClient.channels.cache.get("901568598538063932")
.messages.fetch({limit: null})
.then(message.delete(messages.first(user["display-name"]).author.name))
}
await deleteMessage()
})
async function sendMessage() {
const request = new XMLHttpRequest();
request.open("POST", "API url");
request.setRequestHeader('Content-type', 'application/json');
const users = {
username: "User Timed Out",
avatar_url: 'https://i.imgur.com/GUrbNsB.jpg',
content: `**${username} has been timed out for ${duration} seconds.**`
}
request.send(JSON.stringify(users));
}
await sendMessage()
});
我有这个用于 twitch 聊天的代码以在不和谐中同步,我想在 twitch 上的事件超时时执行我希望它删除频道上某个名称的消息是否有可能没有 ID 我迷失了如何做到这一点可以删除最后一条消息,但不能删除来自特定用户的消息,而且我只有一个 webhook,所以所有用户名的 id 都相同
TypeError:无法读取未定义的属性(读取“第一”)
解决方案
注意:此代码适用于 Discord.js v13.3.0
如错误所述,您正在尝试访问一个名为messages
. 这是因为您没有在then()
参数中定义它,您立即进入回调。
then()
是一个允许您提供要添加的参数的函数。您可以简单地将消息集合作为一个变量调用messages
,并相应地将其传递给回调。
// DON'T do this
messages.fetch({limit: null})
.then(message.delete(messages.first(user["display-name"]).author.name))
// DO this
messages.fetch({limit: null})
.then((messages) => message.delete(messages.first(user["display-name"]).author.name))
推荐阅读
- mysql - 当我在 Tableau Prep 中运行自定义 SQL 查询时,为什么某些列包含空白值?如何检索正确的(非空)值?
- angular - Google Firebase 和 http 发布到列表
- asynchronous - 如何在python中使用asyncio异步运行具有不同参数的相同函数
- ruby - 使用 Net::Sftp 上传文件后,文件有时会消失
- nativescript - 更改应用程序上下文后的 NativeScript Angular 路由错误
- jakarta-ee - 将@Dependent CDI bean 注入 EJB 会导致内存泄漏
- swift - deinit 调用但 uint 测试未完成
- scipy - 对 R^d 中的分箱点使用三角测量
- quarkus - 如何在 Quarkus 中以编程方式注册 bean?
- r - 如何在输出前通过函数处理ggplot的所有文本元素?