from __future__ import annotations import typing from .. import operator from langbot_plugin.api.entities.builtin.command import context as command_context, errors as command_errors @operator.operator_class(name='resend', help='重发当前会话的最后一条消息', usage='!resend') class ResendOperator(operator.CommandOperator): async def execute( self, context: command_context.ExecuteContext ) -> typing.AsyncGenerator[command_context.CommandReturn, None]: # 回滚到最后一条用户message前 if context.session.using_conversation is None: yield command_context.CommandReturn(error=command_errors.CommandError('当前没有对话')) else: conv_msg = context.session.using_conversation.messages # 倒序一直删到最后一条用户message while len(conv_msg) > 0 and conv_msg[-1].role != 'user': conv_msg.pop() if len(conv_msg) > 0: # 删除最后一条用户message conv_msg.pop() # 不重发了,提示用户已删除就行了 yield command_context.CommandReturn(text='已删除最后一次请求记录')