[英]How can i force the Telegram Bot to write to the user first (aiogram)?
我正在尝试使用 Aiogram 通过机器人向频道的新人发送欢迎消息。 但是,如果他之前没有开始与机器人对话,我的机器人就找不到与用户的聊天。 这个问题有什么解决办法吗?
我已经设法处理新来者并将 ID 添加到数据库中,但是
`
@router.chat_member(ChatMemberUpdatedFilter(member_status_changed=(KICKED | LEFT | RESTRICTED)
>>
(ADMINISTRATOR | CREATOR | MEMBER)))
async def on_user_join(event: ChatMemberUpdated):
with grpc.insecure_channel('') as channel:
stub = sub_unsub_pb2_grpc.SubscribtionServiceStub(channel)
timestamp = timestamp_pb2.Timestamp()
timestamp.FromDatetime(datetime.now(tz=timezone.utc))
request = sub_unsub_pb2.SubUnsubEvent(
id=str(event.new_chat_member.user.id),
channelId=str(event.chat.id),
time=timestamp,
subStatus='join'
)
response = sub_unsub_pb2.EventResponse()
stub.TriggerEvent(request)
`
但是当我尝试发送消息时,会抛出找不到聊天的错误消息。 `
await support_bot.send_message(
user_id,
f'Welcome to the channel!'
)
`
这个问题的解决方案:
/start
命令发起与bot的讨论。 此外,在启动命令处理程序中,您可以检查用户是否是新成员并发送欢迎消息。get_chat_member
方法检查用户是否在频道中,该方法返回ChatMember
object。如果此 object 的状态属性为isChatMember.CHAT_MEMBER_STATUS_LEFT
,则用户不再是频道成员,您不应该发送信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.