【发布时间】:2021-09-03 14:31:51
【问题描述】:
我正在用 python 编写一个不和谐的机器人,我在使用下一个功能时遇到了困难。当消息:('user'joined) 被读取时,机器人应该开始每隔 x 秒循环一次函数,直到消息:('user' left) 被读取。
我一直在测试暂存文件中的不同代码。它成功地在“用户”加入时开始循环。但是当 ('user' left) 消息应该通过时,它不会接受新参数并永远继续循环。
这两个版本看起来最有前途:
import re
import time
def message(servermessage):
a = re.sub("[^\S]", " ", servermessage).split()
if a[1] == 'joined':
online = False
elif a[1] == 'left':
online = True
while True:
mcusername = a[0]
print(mcusername, 0)
if online:
break
time.sleep(2)
message('user joined')
time.sleep(10)
message('user left')
和
import re
import sched, time
s = sched.scheduler(time.time, time.sleep)
def message(servermessage):
a = re.sub("[^\S]", " ", servermessage).split()
def rewardplayer():
s.enter(1, 1, rewardplayer)
mcusername = a[0]
print(mcusername, 0)
if a[1] == 'joined':
s.enter(1, 1, rewardplayer)
s.run()
elif a[1] == 'left':
s.cancel()
message('user joined')
time.sleep(10)
print('done')
message('user left')
我的另一个要求是,当在前一个用户的('previoususer' left)消息之前给出('newuser'joined)消息时,它应该能够为不同的用户运行相同的循环。
对于含糊的解释,我深表歉意。但我希望你能提供帮助。提前致谢!
【问题讨论】:
标签: python while-loop sched