首页 > 编程问答 >Telegram API 禁止更改用户的自定义标题

Telegram API 禁止更改用户的自定义标题

时间:2024-07-28 15:55:21浏览次数:10  
标签:python bots telegram

问题:我使用了 FSM Telegram Bot,最终机器人将聊天用户更改为聊天管理员并更改了管理员的自定义标题。但我在更改自定义标题时遇到问题,这是控制台输出:

ERROR:aiogram.event:Cause exception while process update id=XXXXXXXX by bot id=XXXXXXXX
TelegramBadRequest: Telegram server says - Bad Request: RIGHT_FORBIDDEN

代码:

@dp.message(CommandStart())
async def start_questionnaire_process(message: Message, state: FSMContext):
    async with ChatActionSender.typing(bot=bot, chat_id=message.chat.id):
        await asyncio.sleep(2)
        await message.answer('Hi. What is your name: ')
    await state.set_state(Form.name)


@dp.message(F.text, Form.name)
async def capture_name(message: Message, state: FSMContext):
    await state.update_data(name=message.text)
    async with ChatActionSender.typing(bot=bot, chat_id=message.chat.id):
        await asyncio.sleep(2)
        await message.answer('How old a you: ')
    await state.set_state(Form.age)

    
@dp.message(F.text, Form.age)
async def capture_age(message: Message, state: FSMContext):
    check_age = extract_number(message.text)
    await state.update_data(age=check_age)

    data = await state.get_data()
    msg_text = (f'Name:{data.get("name")}/Age:{data.get("age")}')
    await message.answer(msg_text)
    await state.clear()
    
    #####
    await message.bot.promote_chat_member(chat_id=CHANNEL_ID, 
                                user_id=message.from_user.id,
                                request_timeout=2)
    await message.bot.set_chat_administrator_custom_title(chat_id=CHANNEL_ID,
                                                        user_id=message.from_user.id,
                                                        request_timeout=2,
                                                        custom_title=msg_text)

您能帮我吗?

编辑:我没有问题 promote_chat_member() ,我有问题 set_chat_administrator_custom_title() 第一次运行 /start 控制台输出 Bad Request: RIGHT_FORBIDDEN ,函数出错 set_chat_administrator_custom_title() ,第二次运行 /start ,函数`set_chat_administrator_custom_title()正确完成。 机器人只有一项权限“添加新管理员”。


出现 TelegramBadRequest: Telegram server says - Bad Request: RIGHT_FORBIDDEN 错误,说明你的机器人没有足够的权限来设置用户的自定义标题。

尽管你的机器人拥有 “添加新管理员” 的权限,但这并不意味着它可以更改所有管理员设置。设置自定义标题需要额外的权限。

为了解决这个问题,你需要在 Telegram 中为你的机器人授予 "管理群组信息" 的权限。

以下是具体步骤:

  1. 在 Telegram 中打开你的群组。
  2. 进入群组设置。
  3. 选择“管理员”。
  4. 找到你的机器人并点击它。
  5. 启用“管理群组信息”权限。

完成以上步骤后,你的机器人应该就可以成功地使用 set_chat_administrator_custom_title() 函数设置用户的自定义标题了。

关于第一次运行 /start 出现错误,第二次运行正常的原因:

这可能是因为你在第一次运行 /start 时,你的机器人还没有被赋予 "管理群组信息" 的权限。在你手动授予权限后,第二次运行 /start 时,机器人就拥有了必要的权限,所以可以成功执行 set_chat_administrator_custom_title() 函数。

其他注意事项:

  • 确保你的机器人在群组中拥有管理员权限。
  • 用户的自定义标题长度不能超过 16 个字符。

希望以上信息能帮助你解决问题!

标签:python,bots,telegram
From: 78802218

相关文章

  • [附开题]flask框架的校园疫情管理系统92tl0(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着新冠疫情的持续影响,校园作为人群密集、流动性大的场所,其疫情防控工作显得尤为重要。传统的手工记录和口头报告方式已难以满足当前复杂......
  • 如何从 python 脚本将事件和上下文传递到 AWS lambda?
    我正在创建一个cli应用程序,我想用它来调用我的AWSlambda函数:@click.group(context_settings={"help_option_names":["-h","--help"]},invoke_without_command=True)@click.version_option(version=__version__,prog_name="experiment")def......
  • 有没有办法检查是否有人提到@youtubechannelname并使用youtube数据api让Python脚本回
    标题解释了大部分内容。我的问题是,尽管到处搜索,但我没有找到任何有用的解决方案。AI和ChatGPT都无法对此提供帮助。不幸的是,YouTube数据API不提供直接监控频道提及或自动回复评论的功能。YouTube数据API主要用于检索和管理YouTube上的视频、评论和其他资源,而......
  • 如何在 Python 中从 Milesight TrafficX 摄像头、Post(MQTT、TCP/IP、HTTP) 获取数据?
    你好,祝你度过愉快的一天或一夜,我有这个MilesightTrafficX摄像头已启动并正在运行,仪表板中有一个名为POST的设置,您可以在下图中看到:我想要的是知道如何设置这些设置(基于实际上我的意思是)能够在我的Python代码中接收数据。无论协议如何,数据都将如下所示:......
  • 如何循环使用按钮输入,在python中的不同选项之间循环?
    我有一个循环,它采用三路开关输入并在相机开机时选择一个选项:#SetGPIOinputswitchColorOne=pyb.Pin("P9",pyb.Pin.IN,pyb.Pin.PULL_UP)switchColorTwo=pyb.Pin("P7",pyb.Pin.IN,pyb.Pin.PULL_UP)#SetcolorpalletebyswitchifswitchColorOne.value()==0:......
  • SSL 证书验证失败 - 雅虎财经 API - Python
    我正在尝试从雅虎财经获取数据,但收到SSL错误。代码如下:importrequestsresponse=requests.get("https://query1.finance.yahoo.com/v8/finance/chart/META",verify=True)print(response.status_code)出现以下错误:urllib3.exceptions.SSLError:[SSL:CERTIFICATE_......
  • 【学习笔记】Matlab和python双语言的学习(熵权法)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、熵权法的基本概念二、熵权法的基本步骤1、构建决策矩阵2、数据标准化3、计算指标的比重4、计算信息熵5、计算权重6、计算综合得分三、代码实现----Matlab四、代码实现----python总结......
  • 【python】网络通信编程例子
    以下是一个简单的Python示例,展示了如何在Linux下使用套接字进行基本的网络通信,包括创建服务器和客户端。服务器端代码importsocket#创建一个IPv4TCP套接字server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#绑定服务器地址和端口server_addr......
  • 如何将Python版本从3.9降级到3.7?
    我正在开发RaspberryPi。这些是我的操作系统信息:pi@raspberrypi:~$uname-marmv7lpi@raspberrypi:~$cat/etc/os-releasePRETTY_NAME="RaspbianGNU/Linux11(bullseye)"NAME="RaspbianGNU/Linux"VERSION_ID="11"VERSION="11(bullseye)......
  • Python终端输出彩色字符方法
    colorama是一个python专门用来在控制台、命令行输出彩色文字的模块,完全兼容linux和windows各个版本。 1.Python3.x中安装colorama模块: pipinstallcolorama'''可用格式常数:【颜色RED,GREEN都需要大写】Fore:BLACK,RED,GREEN,YELLOW,BLUE,MAGENTA,CYAN,WHI......