简体   繁体   English

Discord 机器人不工作并且不改变状态

[英]Discord bot doesn't work and not changing status

At first my discord bot doesn't work, in this code is erorr and i can't find it, and second is that it doesn't changing status, it was changing when you put just 2 text but when trying to put client.guilds it not起初我的 discord 机器人不起作用,在此代码中是错误的,我找不到它,其次是它没有改变状态,当你只输入 2 个文本但尝试放置client.guilds它不

@tasks.loop( seconds = 12 )
async def changeStatus():
    iterationPosition = 0
    status = [f' on { len(client.guilds) } servers', '~help']
    await client.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name=status[iterationPosition]))
    iterationPosition = 0 if (iterationPosition is len(status) - 1) else (iterationPosition + 1)

@client.event
async def on_ready():
    print( 'bot connected' )
    changeStatus.start()

*Working code but with problem that he writes me answer to commands as many times as all servers he on *工作代码,但问题是他给我写命令的次数与他在所有服务器上的次数一样多

tasks.iterationPosition = 0

@tasks.loop( seconds = 5 )
async def changeStatus():
    status = [f" on { len(client.guilds) } servers", "~help"]
    await client.change_presence(
        activity=discord.Activity(
            type=discord.ActivityType.playing, name=status[tasks.iterationPosition]
        )
    )
    tasks.iterationPosition = (
        0
        if (tasks.iterationPosition is len(status) - 1)
        else (tasks.iterationPosition + 1)
    )

@client.event
async def on_ready():
    print( 'bot connected' )
    changeStatus.start()

In your code you always assign 0 to iterationPosition at the start of loop, instead put it in "global" scope like this:在您的代码中,您始终在循环开始时将0分配给iterationPosition位置,而不是将其放入“全局”scope 中,如下所示:

tasks.iterationPosition = 0

@tasks.loop(seconds=12)
async def changeStatus():
    status = [f" on { len(client.guilds) } servers", "~help"]
    await client.change_presence(
        activity=discord.Activity(
            type=discord.ActivityType.playing, name=status[tasks.iterationPosition]
        )
    )
    tasks.iterationPosition = (
        0
        if (tasks.iterationPosition is len(status) - 1)
        else (tasks.iterationPosition + 1)
    )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM