程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么命令会触发两次?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么命令会触发两次??

开发过程中遇到为什么命令会触发两次?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么命令会触发两次?的解决方法建议,希望对你解决为什么命令会触发两次?有所启发或帮助;

我有一个机器人,可以让你排队进入派对查找器。当队列数达到 2 时,它重置为 0。我有 2 个命令,一个用于第一人,另一个用于记录他们的姓名。但是,当我将其设置为 2 时,它会转到 queue = 0 并在 queue = 0 时触发命令,使其触发两次。

我该如何解决这个问题?

import discord
import os
from discord.utils import get
from discord.ext import commands

@clIEnt.event
async def on_message(message): #defines Message
  
  #If You Queue,And Role Requirement to Do So
  if message.content.startswith('-queue duos'): 
    global queue
    if queue == 1:
      role = discord.utils.get(message.guild.roles,ID=830557149863608367)

      if role in message.author.roles:

        print('you have queued')
      
        global author2
        author2 = message.author
        print(author2)

        #Adds Role Duos
        role = discord.utils.get(message.guild.roles,ID=830219965549510656) 
        await message.author.add_roles(role) 

        #Removes Role NoQueue
        role4 = discord.utils.get(message.guild.roles,ID=830557149863608367)
        await message.author.remove_roles(role4)
      
        #Gives Message
        await message.channel.send('you have joined the duos queue sit tight!')

        
        queue += 1
        await message.channel.send(queue)

        if queue == 2:
          queue = 0
          print('SUCCESS')

    if queue == 0:
      role = discord.utils.get(message.guild.roles,ID=830557149863608367)

      if role in message.author.roles:

        print('you have queued')
      
        global author
        author = message.author
        print(author)

        #Adds Role Duos
        role = discord.utils.get(message.guild.roles,ID=830557149863608367)
        await message.author.remove_roles(role4)
      
        #Gives Message
        await message.channel.send('you have joined the duos queue sit tight!')
          
        queue += 1
        
        await message.channel.send(queue)

    #Is They Already Queued and Have Duos Role  
    else:
      await message.channel.send('You Already Queued!')

解决方法

您正在更改 queue 变量然后检查它,这将导致它执行两次,解决此问题的简单方法是仅在队列的第一次检查中使用 if,并且在其他人上使用 elif,IE:

queue = 1
if queue == 1:
    #Do Something
    queue = 0
elif queue == 0:
    #Do Something else
    queue = 2
elif queue == 2:
    #Do Something else
    queue = 1

上面的示例代码只执行第一个 if 语句,因为 elif 只有在它链接到的 if 语句没有执行时才会执行。

大佬总结

以上是大佬教程为你收集整理的为什么命令会触发两次?全部内容,希望文章能够帮你解决为什么命令会触发两次?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: