使用JSON/Python收集信息的Discord bot显示相同的D

2024-04-18 04:14:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做个不和谐的机器人。在我想使用JSON和Python从一个网站收集一些信息之前,一切正常。在

数据会被收集,但是每次我在Discord中输入命令以获取信息时,它都会显示它所使用的相同数据,就像只获取一次一样——当我将bot连接到我的服务器时。这正是它所做的。在

如何使它在每次有人输入命令时再次收集数据?在

我有命令!状态,每当我输入时,我的bot会使用JSON从网站获取游戏服务器的状态。假设服务器在线,所以它显示“Status:online”,但是如果服务器关闭,我输入!状态再说一遍,它仍然显示状态是在线的。我必须将机器人重新连接到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进入服务器时。在


Tags: 数据命令服务器信息jsonmessage网站状态
1条回答
网友
1楼 · 发布于 2024-04-18 04:14:44

每次向用户提供外部数据时,都应该从服务器获取外部数据。根据您希望它更改的频率,您可以尝试保留它的副本,并跟踪您访问它的时间,但这可能是不必要的。在

def on_message(message):
    if message.content == '!status':
        r = requests.get('http://etcthewebsite')
        json_data = json.loads(r.text)
        status_server = json_data['status']
        yield from client.send_message(message.chanel, "Status is: " + status_server)

编辑:

另外,您可以使用discord.ext.commands来简化编写bot命令。在

^{pr2}$

相关问题 更多 >