首页 > 解决方案 > CSGO数据不和谐机器人

问题描述

基本上,我想做的是一个 discord.py 机器人,它显示我所有的服务器播放器的状态,基本上也就是活动。

然后还有一个名为 $serverlist 的命令,它显示了我所有的 csgo 服务器,包括每个服务器的连接 ip、当前地图和玩家数量。

我遇到的问题不是它无法获得统计数据,而是可以。但我遇到的问题是我似乎无法保持更新,比如如果玩家人数是 10,然后有人加入它应该是 11 但事实并非如此,我什至将获取信息的代码放在 def reloadinfo(): 然后将其线程化为每 5 秒运行一次,无论如何代码如下。

重新加载信息代码:

def reloadinfo():
 threading.Timer(5.0, reloadinfo).start()
AWPENABLED_ADDRESS = ("", 27015)
with valve.source.a2s.ServerQuerier(AWPENABLED_ADDRESS) as server:
    players = []
    for player in server.players()["players"]:
        if player["name"]:
            players.append(player)
    player_count = len(players)
    enabledname = server.info()["server_name"]
    awpenabledplayercount = str(player_count)
    enabledplayercount = str(server.info()["player_count"])
    enabledmap = str(server.info()["map"])

AWPDISABLED_ADDRESS = ("", 27015)
with valve.source.a2s.ServerQuerier(AWPDISABLED_ADDRESS) as server1:
    players = []
    for player in server1.players()["players"]:
        if player["name"]:
            players.append(player)
    player_count = len(players)
    disabledname = server1.info()["server_name"]
    awpdisabledplayercount = str(player_count)
    disabledplayercount = str(server1.info()["player_count"])
    disabledmap = str(server1.info()["map"])

NONADES_ADDRESS = ("", 27015)
with valve.source.a2s.ServerQuerier(NONADES_ADDRESS) as server2:
    players = []
    for player in server2.players()["players"]:
        if player["name"]:
            players.append(player)
    player_count = len(players)
    nadesname = server2.info()["server_name"]
    nonadesplayercount = str(player_count)
    nadesplayercount = str(server2.info()["player_count"])
    nadesmap = str(server2.info()["map"])

SCOUTONLY_ADDRESS = ("", 27015)
with valve.source.a2s.ServerQuerier(SCOUTONLY_ADDRESS) as server3:
    players = []
    for player in server3.players()["players"]:
        if player["name"]:
            players.append(player)
    player_count = len(players)
    scoutname = server3.info()["server_name"]
    scoutonlyplayercount = str(player_count)
    scoutplayercount = str(server3.info()["player_count"])
    scoutmap = str(server3.info()["map"])
reloadinfo()

状态码

async def status_task():
    while True:
        await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name='AWP Enabled: ' + awpenabledplayercount + " playing"))
        await asyncio.sleep(20)
        await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name='AWP Disabled: ' + awpdisabledplayercount + " playing"))
        await asyncio.sleep(20)
        await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name='No Nades: ' + nonadesplayercount + " playing"))
        await asyncio.sleep(20)
        await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name='Scout Only: ' + scoutonlyplayercount + " playing"))
        await asyncio.sleep(20)
        total = str(int(enabledplayercount) + int(disabledplayercount) + int(nadesplayercount) + int(scoutplayercount))
        #total2 = str(total)
        await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name='Total Playing: ' + total + " playing"))
        await asyncio.sleep(20)

如果需要更多代码 lmk,并给我一些有用的答案,我可以利用它来保持信息更新等等。

亲切的问候。

标签: pythondiscord.py

解决方案


推荐阅读