【问题标题】:How do I do an automatic check every 10 seconds?如何每 10 秒进行一次自动检查?
【发布时间】:2021-12-15 13:46:06
【问题描述】:

每 10 秒检查一次支付状态,支付成功后,用户应该收到一条支付成功的消息,不再检查状态。

我尝试使用 setInterval() 方法,但它并没有因为 clearInterval() 而停止。

client.on('messageCreate', (message) => { //whenever a message is sent
  if (message.content.startsWith(prefix + 'оплата')) { //if it contains an invite link

 if (!message.channel.name === 'DM') return message.channel.send("Эта команда работает только в личных сообщениях бота!")
 const nick = message.content.split(" ").splice(1).join(" ")
if (!nick) return message.author.send("Укажите ваш никнэйм!")
    const params = {
        publicKey,
        amount: "1.00" ,
        currency: 'RUB',
        billId: qiwiApi.generateId(),
        comment: "Оплата спонсорки на месяц."
       // successUrl: 'https://merchant.com/payment/success?billId=lougeghuu'
    };
    const link = qiwiApi.createPaymentForm(params);
      const PAYID  = new Discord.MessageEmbed()
      .setAuthor("GUARD QIWI", "https://media.discordapp.net/attachments/899699390082601011/903958418166005760/871755380349341797.png")
      .setTitle("Выставление счет")
      .setDescription(`
      Сумма платежа: ${params.amount} ${params.currency}
      Ваш платежный ID: ||${params.billId}||
      НИКОМУ НЕ СООБЩАЙТЕ ВАШ ПЛАТЕЖНЫЙ ID!
      
      Ссылка оплаты: [Нажмите сюда](${link})`)
      message.author.send({ embeds: [PAYID] })
    

        // generate random number between 1 and list length.
    
        qiwiApi.getBillInfo(params.billId).then(data => { // получаем данные о счете
          // if (error) {message.channel.send("Произошла ошибка! Возможно вы не оплатили счет!")}
           if (data.status.value == "PAID") { // Если статус счета оплачен (PAID)
             var Rcon = require('rcon');

             var conn = new Rcon("**");
             
             conn.on('auth', function() {
               // You must wait until this event is fired before sending any commands,
               // otherwise those commands will fail.
               console.log("Authenticated");
               console.log("Sending command: SPONSOR!")
               conn.send(`**`)
             


             }).on('response', function(str) {
               console.log("Response: " + str);
             }).on('error', function(err) {
               console.log("Error: " + err);
             }).on('end', function() {
               console.log("Connection closed");
               process.exit();
             });
             
             conn.connect();
             const embed = new Discord.MessageEmbed()
.setAuthor("GUARD QIWI", "https://media.discordapp.net/attachments/899699390082601011/903958418166005760/871755380349341797.png")
.setDescription(`Ваш счет оплачен!`)
               message.author.send({embeds: [embed]})
              }
           else { 
             console.log(`${message.author.id} еще не оплатил счет.`)

           }}).catch(e => {
            console.log(`${message.author.id} еще не оплатил счет.`)
           
           })}})```

【问题讨论】:

  • 我认为通过 Discord 处理付款不是一个好主意。

标签: node.js discord.js bots


【解决方案1】:

这就是你应该如何使用setInterval 方法:

const interval = setInteval(()=>{
    //my code
}, 10000)

clearInterval(interval)

如果你想从内部阻止它:

const interval = setInteval(()=>{
    //my code
    clearInterval(interval)
}, 10000)

将所有内容放入一个新范围可能会很方便,以避免在间隔之外使用无用的变量阻塞代码:

{
    const interval = setInteval(()=>{
        //my code
        clearInterval(interval)
    }, 10000)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2019-11-07
    • 2013-05-22
    • 2014-06-05
    • 2014-04-15
    相关资源
    最近更新 更多