telegram bot API“setMyName”不起作用

问题描述 投票:0回答:1

这是我的代码

import requests
import json
bot_token = " "  # your bot token
token_url = f"https://api.telegram.org/bot{bot_token}/"

parameters = {
    "name": "sdfjk123",
    "language_code": "en"
}
headers = {
    "Content-Type": "application/json",
}

print(token_url+'setMyName')


def set_name():
    r = requests.post(token_url+'setMyName', json=json.dumps(parameters), headers=headers)
    print(r.json())


set_name()

这里是请求返回的错误信息

{'ok': False, 'error_code': 400, 'description': 'Bad Request: BOT_TITLE_INVALID'}

我尝试了什么

首先,我检查了我的令牌,没有错误,其次 我尝试使用

request.get(url,params=parameters)
,确实返回了成功,但是机器人名称没有改变,所以我使用了上面的方法。另外,我使用了
setMyDescription
setMyCommands
,它们也返回成功,但机器人没有改变。当我使用相关设置参数时,机器人似乎没有改变,但是当我使用查询和其他参数时,却返回了相应的信息!

有什么办法可以解决这个问题吗?

python telegram-bot
1个回答
0
投票

您将数据作为

json=json.dumps(parameters)
传递,但您需要使用
data
中的
requests
参数。


以下代码允许我更新机器人的用户名

import requests
import json

bot_token = "xxx"  # your bot token
token_url = f"https://api.telegram.org/bot{bot_token}/"

parameters = {
    "name": "FooBar",
    "language_code": ""
}

def set_name():
    r = requests.post(token_url+'setMyName', data=json.dumps(parameters))
    print(r.json())

set_name()

回应:

{'ok': True, 'result': True}
© www.soinside.com 2019 - 2024. All rights reserved.