如何解决尝试调用函数时热解图处理程序不起作用
filter_ = (filters.me & ~filters.forwarded & ~filters.incoming & filters.via_bot & filters.command(".",["ascii"]))
async def hello(client,message):
await message.reply("HELLLO WORLD")
app.add_handler(hello,filter_ )
app.start()
idle()
app.stop()
它总是进入一个循环,仅此而已。 它不起作用,客户没有回复。 它有什么问题?还是我做错了什么?
解决方法
您需要添加一个 MessageHandler()
。
from pyrogram.handlers import MessageHandler
...
app.add_handler(MessageHandler(hello,filter_))
请参阅文档中的 Update Handler 以获取参考。
虽然这与您最初的问题无关,但我相信 Decorators 是更好的选择,因为它们不需要额外的导入或实例化:
from pyrogram import Client
app = Client()
@app.on_message(filter_)
def hello(client,message):
await message.reply("hello")
app.run() # This app.run() call also skips app.start(),idle() and app.stop()
编辑以回复以下 "answer":
对于您正在测试的内容,您使用了过于复杂的过滤器。
filter_ = (
filters.me # Messages that you sent
& ~filters.forwarded # Not messages that were forwarded
& filters.incoming # Messages this session received
& ~filters.via_bot # No "via @samplebot" (ie no inline bots)
& filters.command(".",["dict","define","meaning"] # The crux of your issue.
)
Command Filter 接受三个参数。 commands
、prefixes
和 case_sensitive
。由于您没有使用命名参数 (arg=value
),因此您需要将它们按顺序排列。
只有第一个参数是必需的,并且需要是单个字符串或字符串列表(对于多个命令)。如果未指定,prefixes
将默认为 "/"
并且命令需要类似于 /this
才能触发。因为你有其他顺序的参数,你搞砸了命令过滤器。
您需要在 (see docs) 附近切换命令过滤器的参数,或者更好的是,从创建问题时要求的 minimal example 开始。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。