不和谐&多处理亡者开关蟒蛇

0

的问题

我是想让这个逻辑,所以,如果我得到的消息上的不和谐,其中包含的"911"它破坏了脚本或电话某一功能和停止计时器 im面临一个很大的错误我不能想个适当的方法来做...

任何帮助吗?

from time import sleep
import discord
import multiprocessing

client = discord.Client()
manager = multiprocessing.Manager()
sign = manager.boolean(False)

def Timer(sign):
    for second in range(15):
        if sign == True:
            print("bloooock")
            break
        if sign == False:
            print("passsssss")
            sleep(1)
def discord_message(client, sign):
    @client.event
    async def on_ready():
        print('Logged on as', client)
    async def on_message(message):
        messageContent = message.content
        if len(messageContent) > 0:
            if messageContent == str("911"):
                sign = manager.bool(True)
    client.run('###')
if __name__ == '__main__':
    freeze_support()
    p1 = multiprocessing.Process(target=Timer, args=(sign,))
    p2 = multiprocessing.Process(target=discord_message, args=(client, sign,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
discord discord.py python python-3.x
2021-11-23 22:45:54
1

最好的答案

1

当你设置一个变量内的职能,它将默认使用地方范围。 看看这个示例:

a = 1
def f(): a = 2
f()
print(a)

尝试它!

这将产出1.

a = 1
def f(): print(a); a = 2
f()
print(a)

尝试它!

这将实际上是错误的,因为由于你设置 a = 2 在功能 f, a 变成一个地方变量如此 print(a) 错误的,因为它不是定义在这一点上。

为了解决这个问题,把 global a 顶部的功能。 在你的情况下,做 global sign 内部 def on_message 像这样:

def discord_message(client, sign):
    ...
    async def on_message(message):
        global sign
        ...

现在,时 sign = manager.bool(True) 正在设置,它不是影响全球变 sign 这的 Timer 是阅读。

此外,我认为你需要添加 @client.eventasync def on_message 为好。

2021-11-23 23:20:31

感谢它的工作以及:)
Joseph Yosoevsky

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................