您需要添加一个MessageHandler()
.
from pyrogram.handlers import MessageHandler
...
app.add_handler(MessageHandler(hello, filter_))
请参阅文档中的更新处理程序以获取参考。
虽然这与您最初的问题无关,但我相信装饰器是一个更好的选择,因为它们不需要额外的导入或实例化:
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()
编辑以回复下面的“答案”:
对于您正在测试的内容,您使用的过滤器过于复杂。
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.
)
命令过滤器采用三个参数。commands
, prefixes
, 和case_sensitive
. 由于您没有使用命名参数 ( arg=value
),因此您需要保持它们的顺序。
只有第一个参数是必需的,并且需要是单个字符串或字符串列表(用于多个命令)。如果不指定,prefixes
将默认为"/"
和命令一样需要/this
触发。由于您有其他顺序的参数,因此您弄乱了命令过滤器。
您需要切换命令过滤器的参数(请参阅文档),或者更好的是,从创建问题时要求的最小示例开始。