0
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()

それは常にループに入るだけで、それ以上はありません。動作しません。クライアントからの返信はありません。何が問題なのですか?それとも私は何か間違ったことをしていますか?

4

1 に答える 1

0

を追加する必要がありMessageHandler()ます。

from pyrogram.handlers import MessageHandler

...

app.add_handler(MessageHandler(hello, filter_))

リファレンスについては、ドキュメントのUpdate Handlerを参照してください。


これは元の質問とは関係ありませんが、追加のインポートやインスタンス化を必要としないため、デコレータがより良い代替手段になると思います:

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.
)

Command Filterは 3 つの引数を取ります。commandsprefixes、およびcase_sensitive。名前付き引数 ( arg=value) を使用していないため、順序を維持する必要があります。
最初の引数のみが必須であり、単一の文字列または文字列のリスト (複数のコマンドの場合) である必要があります。指定されていない場合は、prefixesデフォルトで になり、コマンドはトリガー"/"するようにする必要があります。/this引数の順序が逆になっているため、コマンド フィルターを台無しにしています。

コマンドフィルターの引数を切り替える必要があります ( docs を参照)。または、質問を作成するときに求められた最小限の例から始めることをお勧めします。

于 2021-05-18T14:55:49.233 に答える