在 Twitch 的自动回复脚本中添加冷却功能

问题描述 投票:0回答:1

我在reddit上看到了这篇文章(其他流上的自动回复脚本),我发现@puerdon的解决方案非常有用,但我想知道是否可以在脚本/html代码中添加冷却功能(你可以检查上面的 reddit 帖子中的原始 html 代码)。

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
</head>

<body>
    <script src="https://github.com/tmijs/tmi.js/releases/download/v1.8.5/tmi.min.js"></script>

    <script> 
        const client = new tmi.Client({
            options: { 
                debug: false,
                skipMembership: true, // 不接收 JOIN/PART 訊息
                skipUpdatingEmotesets: true,
            },
            connection: {
                reconnect: true,
                secure: true
            },
            identity: {
                username: 'your_twitch_username',            // [TODO]: input your Twitch username 
                password: 'genereated_oath_password'         // [TODO]: input the genereated oath password
                                                             // 1. go to https://twitchapps.com/tmi/
                                                             // 2. click "Connect"
                                                             // 3. You will get a password beginning with "oath..."
                                                             // 4. Copy the whole password and paste inside the 'genereated_oath_password'
            },
            channels: [ 'type_the_channel_you_want_to_listen_to' ] // [TODO]: input the channel name you want to listen to
        });

        client.connect().catch(console.error);

        client.on('message', (channel, tags, message, self) => {
         
            // this part is to skip the message sent by you,
            // or it will be prone to cause infinite loop
            if (self) {
                console.log(self);
                return;
            }

            // Here is the example of detecting a "hello" in a message
            // I first turn message to lower case and then check if the message includes "hello" in it
            // This can then detect "Hello", "hELLO", "HELLO" ... etc. variation of capitalization in the message
            if (message.toLowerCase().includes("hello")) {
                
                // if the condition above is met, then send "hello" in the chat
                client.say(channel, "Hi!");
            }

        });


    </script>
</body>

</html>

假设,在发送第一个“你好”后,我想让脚本在接下来的 2 或 3 分钟内再次发送自动回复。这样就不会在这么短的时间内发送同样的垃圾邮件了。

PS。我给 @puerdon 发了一条私信来帮助我解决我的请求,因为我不是编码员,但他很长一段时间没有回复我(也许现在是一个废弃的帐户),所以我想在这里分享它,如果有人知道怎么做的话添加此功能。

任何有用的见解将受到高度赞赏。非常感谢!

添加一些代码行,使我能够在自动消息之间添加冷却时间或缓冲时间。

html twitch
1个回答
0
投票

实现“冷却”效果的一个概念称为“去抖动”。

这是一个简单的去抖函数:

function debounce(func, delay) {
  let timeoutId;

  return function(...args) {
    clearTimeout(timeoutId);

    timeoutId = setTimeout(() => {
      func.apply(this, args);
    }, delay);
  };
}

在您的情况下,您可以将功能封装到像

maybeSayHello()
这样的方法中,并将其传递给此防抖函数,以及以毫秒为单位的冷却时间。

© www.soinside.com 2019 - 2024. All rights reserved.