Как исправить синтаксическую ошибку pyrogram.filters.command?
Я пытаюсь создать бот для телеграмм с клавиатурой, но я столкнулся с ошибкой, помогите мне. Я много раз пытаюсь исправить, но терпит неудачу.
Мой код:
from pyrogram.types import ReplyKeyboardMarkup
from pyrogram import client
bot = ("bot")
@pyrogram.filters.command(commands: Union["start"] = 'start', prefixes: Union["/","!"], case_sensitive: bool = False)
async def example():
bot.send_message(
chat_id=message.chat.id, text="test",
reply_markup = ReplyKeyboardMarkup(
[
["test button"],
["test button 2"]
]))
Ошибка:
2021-04-16T11:57:40.864700+00:00 app[worker.1]: File "/app/main.py", line 6
2021-04-16T11:57:40.864717+00:00 app[worker.1]: @pyrogram.filters.command(commands: Union["start"] = 'start', prefixes: Union["/","!"], case_sensitive: bool = False)
2021-04-16T11:57:40.864852+00:00 app[worker.1]: ^
2021-04-16T11:57:40.864858+00:00 app[worker.1]: SyntaxError: invalid syntax
1 ответ
Вы используете
command
filter в качестве декоратора, что не так, как работает обработка обновления Pyrogram.
Пожалуйста, прочтите соответствующую документацию о том, как использовать фильтры .
Изменить, потому что мой исходный ответ не отвечает на поставленный вопрос.
Сами фильтры нельзя использовать в качестве декораторов. Фильтры - это аргументы, которые вы можете передать декоратору или, другими словами, обработчику обновления.
from pyrogram import Client, filters
app = Client()
@app.on_message( # the actual decorator
filters.command("start") # the command filter
)
def handler(app, message):
message.reply("hi")
app.run()