问题:我使用了 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 中为你的机器人授予 "管理群组信息" 的权限。
以下是具体步骤:
- 在 Telegram 中打开你的群组。
- 进入群组设置。
- 选择“管理员”。
- 找到你的机器人并点击它。
- 启用“管理群组信息”权限。
完成以上步骤后,你的机器人应该就可以成功地使用
set_chat_administrator_custom_title()
函数设置用户的自定义标题了。
关于第一次运行
/start
出现错误,第二次运行正常的原因:
这可能是因为你在第一次运行
/start
时,你的机器人还没有被赋予 "管理群组信息" 的权限。在你手动授予权限后,第二次运行
/start
时,机器人就拥有了必要的权限,所以可以成功执行
set_chat_administrator_custom_title()
函数。
其他注意事项:
- 确保你的机器人在群组中拥有管理员权限。
- 用户的自定义标题长度不能超过 16 个字符。
希望以上信息能帮助你解决问题!
标签:python,bots,telegram From: 78802218