我想制作一个Discord机器人 . 一切正常,直到我想从使用JSON和Python的网站收集一些信息 .
数据被收集,但每次我在Discord中输入我的命令以获取我的信息时,它会显示它使用的相同数据,就像它只获得一次 - 当我将机器人连接到我的服务器时 . 这正是它的作用 .
如何在每次有人输入命令时再次收集数据?
示例:我有命令!status,每当我键入它时,我的机器人从使用JSON的网站获取游戏服务器的状态 . 假设服务器处于联机状态,因此显示“状态:在线”,但如果服务器关闭并再次键入!状态,则仍然显示状态为“在线” . 我必须将机器人重新连接到Discord服务器,以便选择状态 .
我知道我的python脚本只能运行一次 .
这是一个片段:
r = requests.get('http://etcthewebsite')
json_data = json.loads(r.text)
status_server = json_data['status']
def on_message(message):
if message.content == "!status":
yield from client.send_message(message.chanel, "Status is: " + status_server)
希望你们明白我的意思 . 我再说一遍:代码工作正常,但是每次输入命令时它都不会选择信息;只有一次 - 当BOT进入服务器时 .
1 回答
每次向用户提供外部数据时,都应从服务器获取外部数据 . 根据您期望更改的频率,您可以尝试保留它的副本并跟踪您访问它的时间,但这可能是不必要的 .
编辑:
顺便说一句,您可以使用
discord.ext.commands
使编写bot命令更简单一些 .