discord消息提醒的问题

2년 전

这几天的discord消息提醒总是不提醒提到的消息

在测试在回复中提到自己,倒是能获得消息提醒

但是在帖子里提到自己就不行了

看了一下代码,发现是逻辑上的问题:


if (user && user.mention && params.body.includes(`@${user.account}`)) {
    let content = '';
    let title = '';
    let comment = '';
    let url = '';
    if (isRootPost) {
        content = `@${user.account}:\n"@${user.account}" was  mentioned by @${params.author} in a post`;
        title = `${params.title}`;
        comment = params.body.substring(0, 100);
    } else {
        content = `@${user.account}:\n"@${user.account}" was  mentioned by @${params.author} in a comment`;
        title = `${params.permlink}`;
        comment = params.body.substring(0, 100);
    }
    url = `${user.platform}/@${params.author}/${params.permlink}`;
    createMessge(user.id, content, title, comment, url, time);
}

问题出在第一行,如果body里面包含用户账号,就发送消息提醒

听起来没啥问题,但是问题就出在包含的用户账号这里

这里的用户账号是发帖人的账号,而不知要收到提醒的账号

所以如果你不是发帖人,并且也不是收到提醒的账号,那就永远收不到消息提醒

所以要先获取所有要获得消息提醒的账号,然后把账号逐一试试body里是否有包含这个账号。如果有,就发消息给这个账号。

修复后的代码如下:


let accounts = Array.from(usersMap.keys());
for (account of accounts) {
    user = usersMap.get(account);
    if (user && user.mention && params.body.includes(`@${account}`)) {
        let content = '';
        let title = '';
        let comment = '';
        let url = '';
        if (isRootPost) {
            content = `@${user.account}:\n"@${user.account}" was  mentioned by @${params.author} in a post`;
            title = `${params.title}`;
            comment = params.body.substring(0, 100);
        } else {
            let post = await getContent(params.parent_author, params.parent_permlink);
            content = `@${user.account}:\n"@${user.account}" was  mentioned by @${params.author} under the post`;
            title = `${post.root_title}`;
            comment = params.body.substring(0, 100);
        }
        url = `${user.platform}/@${params.author}/${params.permlink}`;
        createMessge(user.id, content, title, comment, url, time);
    }
}

最后成功获得消息提醒:

image.png

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
STEEMKR.COM IS SPONSORED BY
ADVERTISEMENT