当您通过监听更新从一个通道复制到另一个通道时,如何让WtelegramClient显示回复(原始消息和回复消息的预览)?我处理回复的原始消息和回复在它下面,但我想让它像内置的回复显示。
我希望它能像原来频道中的默认行为那样

目标通道中的当前显示

private async Task<Task> DisplayMessage(MessageBase messageBase,
bool edit = false)
{
if (edit) Console.Write("(Edit): ");
switch (messageBase)
{
case TL.Message m:
if (m.Peer.ID == from.ID)
{
string message = $"{m.message}";
Console.WriteLine(message);
if (messageBase.ReplyTo != null)
{
var chats = await Client.Messages_GetAllChats();
InputPeer peer = chats.chats[from.ID];
Messages_MessagesBase repMessage = await Client.Messages_GetHistory(peer);
TL.Message repliee = (TL.Message)repMessage.Messages[0];
if (repMessage.Messages.Length > 0)
{
foreach (var msg in repMessage.Messages)
{
if (msg.ID == m.reply_to.reply_to_msg_id)
{
repliee = (TL.Message)msg;
}
}
}
TargetLog(repliee.message + Environment.NewLine + Environment.NewLine +
"UPDATE:" + Environment.NewLine + message);
}
else
{
await Client.Messages_ForwardMessages(from, new[] { messageBase.ID }, new[] {
WTelegram.Helpers.RandomLong() }, to, drop_author: true);
}
}
private async Task TargetLog(string txt)
{
await Client.SendMessageAsync(to, txt);
}发布于 2022-10-28 11:44:45
你不能用Messages_ForwardMessages回复。
您必须使用SendMessageAsync复制消息(参见示例),目标聊天中参数reply_to_msg_id为msg ID。
当然,这意味着您必须在程序中记住源msg ID与目标复制的msg ID之间的映射,以正确映射它所响应的msg ID。
注意,SendMessageAsync返回有关发送的消息的信息。
https://stackoverflow.com/questions/74227516
复制相似问题