我有一个机器人,可以让你排队进入派对查找器。当队列数达到 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=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)
#Is They Already Queued and Have Duos Role
else:
await message.channel.send('You Already Queued!')
答案 0 :(得分:2)
您正在更改 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
语句没有执行时才会执行。