Python如何每30秒运行一次脚本,然后发送discord消息

Python如何每30秒运行一次脚本,然后发送discord消息,python,json,api,discord,discord.py,Python,Json,Api,Discord,Discord.py,我正在开发一个机器人,它可以检查特定的以太地址和令牌传输。所有的事情都完成了,但我不能让检查部分工作。它会检查addr,如果它发生了变化,它会输出,但如何每30秒运行一次,输出就会不一致 我的代码: 导入请求、时间、json、sys、discord 结果=请求。获取('myapi') result.json() results=“soon:tm:” 天然气(inp)的def价格: def递归_函数(inp): 如果类型(inp)为列表: 对于inp中的i: ans=递归函数(i) 如果是ans!

我正在开发一个机器人,它可以检查特定的以太地址和令牌传输。所有的事情都完成了,但我不能让检查部分工作。它会检查addr,如果它发生了变化,它会输出,但如何每30秒运行一次,输出就会不一致

我的代码:

导入请求、时间、json、sys、discord 结果=请求。获取('myapi') result.json() results=“soon:tm:” 天然气(inp)的def价格: def递归_函数(inp): 如果类型(inp)为列表: 对于inp中的i: ans=递归函数(i) 如果是ans!=无: 返回ans elif类型(inp)为dict: 如果inp中的“名称”: 返回inp['name'] 对于inp中的i: ans=递归函数(inp[i]) 如果是ans!=无: 返回ans 其他: 一无所获 ans=递归函数(inp) 如果ans else“找不到新令牌tx”,则返回ans message.channel.send(天然气价格(result.json()['operations'][0]['tokenInfo']['name'])) 类MyClient(discord.Client): 异步def on_就绪(自): 打印('登录身份',self.user) _消息上的异步定义(self,message): #不要回应我们自己 如果message.author==self.user: 返回 如果message.content='.get': #发送消息 #正在检查其他命令,如“.help” 尽管如此: #在此执行的代码 打印(‘完成’) 时间。睡眠(1) client=MyClient() client.run(“mytoken”)
当脚本检查时是这样的,若输出令牌,那个么程序运行。我花了7个小时才把它修好。我不知道你到底想做什么,但是

while True:
    # Code executed here
    print ('done')
    time.sleep(1)
将在此之后阻止任何代码。循环永远不会结束。所以,

client = MyClient()
client.run(btoken)
print ('done no errors 2')

将永远不会运行,并且您的机器人永远不会联机

我认为您应该将其放在代码的顶部,因为(如@effprime所说)如果处于无限while循环下,您的机器人将永远不会联机:

import requests , time , json , sys , discord
result=requests.get('myapi')

result.json()
results = "soon:tm:"
client = MyClient()
client.run("mytoken")
while True:
    # Code executed here
    print ('Done')
    time.sleep(30) #you pause the code for 30 seconds everytime all the code as been executed.
为了回答您的主要问题,即“如何每30秒运行一次脚本,然后发送discrod msg”,我将编写一个类似的while循环:

import requests , time , json , sys , discord
result=requests.get('myapi')

result.json()
results = "soon:tm:"
client = MyClient()
client.run("mytoken")
while True:
    # Code executed here
    print ('Done')
    time.sleep(30) #you pause the code for 30 seconds everytime all the code as been executed.

您不应该在异步代码中使用
time.sleep
,它会阻塞整个执行线程,换句话说,当脚本处于睡眠状态时,您将无法使用bot,您应该使用
asyncio.sleep