Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyrogram-在client.copy_消息中包含用户名_Python_Telegram_Pyrogram - Fatal编程技术网

Python Pyrogram-在client.copy_消息中包含用户名

Python Pyrogram-在client.copy_消息中包含用户名,python,telegram,pyrogram,Python,Telegram,Pyrogram,我正在创建一个机器人,所有特定用户组都将使用它向机器人共享图像。 机器人将接收图像并将其转发给一个组 在用户确认后,我让bot成功地将带有图像的消息转发给组,但我想在转发的消息中附加与bot交互的人的@username或userID 可能会添加带有@username或@user_id的标题,该标题是向bot提交帖子的人的 文件1 from pyrogram import ( Client, filters ) @Client.on_callback_query() async

我正在创建一个机器人,所有特定用户组都将使用它向机器人共享图像。 机器人将接收图像并将其转发给一个组

在用户确认后,我让bot成功地将带有图像的消息转发给组,但我想在转发的消息中附加与bot交互的人的@username或userID

可能会添加带有@username或@user_id的标题,该标题是向bot提交帖子的人的

文件1

from pyrogram import (
    Client,
    filters
)

@Client.on_callback_query()
async def cb(client, call):

k = call.data
msgid = int(k.split("-")[1])
    chat = call.message.chat.id
await call.message._client.copy_message(-100XXXXXXGROUPID, chat, msgid,
                                                caption="")
文件2

    Client,
    filters
    )
@Client.on_message(filters.private & ~filters.caption &
                   ~filters.command("start"))
async def copy(client, message):
    chat = message.chat.id
     

    await message.copy(-100groupc)
我尝试在标题中添加以下内容:

client.get_chat_members(chat)
caption=chatmember.User
我没有得到任何错误,但没有得到任何标题


我在浏览pyrograms文档时有点迷失了方向,我没有找到任何关于如何实现这样的东西的好例子。我了解到机器人必须先“会见”用户,但如果用户在机器人聊天中与它进行交互,这难道不起作用吗?

我不知道我是否已经理解了你想做什么,但希望我做对了,下面是我对这种情况的建议。
注意:您不能编辑转发的邮件,通常,您不能编辑您不是邮件发件人的邮件

主要答覆 我刚看了一下你写的标题,看到了copy_message()函数。
事实上,如果您查看文档,您可以轻松地将标题与所发送的媒体一起发送。
正如文件所说:

标题(字符串,可选)–媒体的新标题,实体解析后为0-1024个字符。如果未指定,则保留原始标题。传递“”(空字符串)以删除标题

所以只要写下:

Client.copy_消息(chat_id,from_chat_id,message_id,caption=username)
砰的一声,你正在用你一直试图发送的媒体发送标题

另一个解决方案 首先,您必须下载图片,然后将其上传到您需要的任何地方。
这使你成为图片的发送者,之后你可以编辑图片并在标题中添加此人的id或用户名。(也可以在上传图片时写入阳离子)
但是顺便说一句,如果您确信如果您将另一个人的消息转发到某个频道,您可以编辑该消息,请尝试一下,并在下面为我们评论结果,但从逻辑上讲,这不应该起作用。
顺便说一句,您可以使用该功能编辑图像的标题,也可以使用该功能发送照片。

另外,请查看文档,看看哪个功能适合您

如果我理解正确,您希望用户将图像发送到您的机器人,然后将图像发送到带有原始用户帐户链接的频道

使用来自用户的
消息的绑定方法。在
标题中提到

@app.on\u消息(
filters.photo#仅用于图像的过滤器
&filters.user(approved_users)#仅允许此列表中的用户
)
def copy_至_通道(u,消息):
message.copy(#copy(),因此没有“转发自”标题
chat_id=target_chat,#您要发布到的频道
caption=message.from_user.title#在新邮件中提及发帖用户
)

谢谢您的回复。我已尝试您的解决方案1添加
客户端。复制消息(chat,chat,msgid,caption=username)
但我得到错误
未定义username
这是一个示例代码,您不应该复制它。如果你想找到
用户名
,你可以在
调用中找到它。如果您想了解有关
呼叫
类型的更多详细信息(它的更好名称是
消息
而不是呼叫),请查看。如果您想了解有关
呼叫的更多详细信息,请从用户
处查看。最后,如果你的问题解决了,如果你接受我的回答,我会很高兴的