这是我的代码

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'}

我try 了什么

首先,我判断了我的 token ,它没有错误,其次 我try 使用request.get(url,params=parameters),确实返回成功,但机器人名称没有更改,所以我使用了上面的方法.此外,我使用了setMyDescriptionsetMyCommands,它们也会返回成功,但机器人没有改变.看来当我使用相关设置参数时,机器人并没有改变,但当我使用查询和其他参数时,就会返回相应的信息!

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

The problem has been solved

使用requests.post(token_url+'setMyName', json=parameters),不要使用json.dumps()

推荐答案

您正在将数据传递为json=json.dumps(parameters),但您需要使用requests中的data参数.


以下代码允许我更新Bot的用户名

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}

Python相关问答推荐

使用Python从HTTP打印值

如何将 map 数组组合到pyspark中每列的单个 map 中

Python中的Pool.starmap异常处理

从单个列创建多个列并按pandas分组

从 struct 类型创建MultiPolygon对象,并使用Polars列出[list[f64]列

了解shuffle在NP.random.Generator.choice()中的作用

无法导入已安装的模块

强制venv在bin而不是收件箱文件夹中创建虚拟环境

按照行主要蛇扫描顺序对点列表进行排序

我从带有langchain的mongoDB中的vector serch获得一个空数组

将jit与numpy linSpace函数一起使用时出错

Pandas 滚动最接近的价值

2D空间中的反旋算法

如何更改分组条形图中条形图的 colored颜色 ?

ThreadPoolExecutor和单个线程的超时

判断solve_ivp中的事件

在Python中计算连续天数

ConversationalRetrivalChain引发键错误

如何创建引用列表并分配值的Systemrame列

在代码执行后关闭ChromeDriver窗口