nek0us / nonebot_plugin_steam_game_status

在群内播报steam游戏状态的Nonebot插件
GNU General Public License v3.0
46 stars 5 forks source link

feat: 支持绑定steam好友代码 #11

Closed ab-Royo closed 1 year ago

ab-Royo commented 1 year ago

在群聊使用中,很多群友绑定Steam ID第一次都会用好友代码,报错之后才会去找steamID64

nek0us commented 1 year ago

这个api使用的是steam id,无法直接拼接steam好友代码进行查询

ab-Royo commented 1 year ago

我已经在代码中添加了:如果不满足steamID64的长度条件,就先尝试将好友代码转换为steamID64

nek0us commented 1 year ago
steam_id = arg.extract_plain_text()
if len(steam_id) != 17:
    try:
        steam_id = int(steam_id)
        steam_id += 76561197960265728
        steam_id = str(steam_id)
    except:
        await matcher.finish("steam id格式错误")

这段代码我看到的意思是,如果不是steamid格式(假如是steam好友代码格式),会把它拼接到一个看起来像个人steamid值之前,最后再把拼接后的内容,作为steam api的steamids参数值进行查询。 但steam api的steamids参数是仅接收steam id的,也并没有看到steam好友代码转steam id的相关代码。

ab-Royo commented 1 year ago

这个就是好友代码转steamid64,你可以拿你的好友代码试一下, 先转换为十六进制数,将十六进制数的每个字节分别减去0x30,将减法后的结果拼接成一个新的十六进制数,将新的十六进制数转换为十进制数,并在前面加上7656119 ,这里是直接在十进制中+76561197960265728