O problema é a biblioteca do telegram?

128 views
Skip to first unread message

Kelvyn Batista Brandão

unread,
Aug 17, 2023, 1:28:46 PM8/17/23
to Python Brasil
Fala pessoal, sou novato neste mundo, estou tentando criar um bot do telegram que edite mensagens, um amigo me deu umas dicas, ele também é novato, eu escrevi um pouco mas nao esta funcionando, o codigo é este:

from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

# Função para editar mensagens
def edit_message(update: Update, context: CallbackContext) -> None:
    message = update.message
    new_text = message.text.replace("USDT", "/USDT")
    message.edit_text(text=new_text)

def main() -> None:
    # Substitua 'token' pelo token do seu bot
    updater = Updater(token="token", use_context=True)
    dispatcher = updater.dispatcher

    # Manipulador para editar mensagens
    dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, edit_message))

    # Inicie o bot
    updater.start_polling()

    # Mantenha o bot em execução até que Ctrl+C seja pressionado
    updater.idle()

if __name__ == '__main__':
    main()

 os erro que aparece é este:

>>> from telegram import Update
>>> from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'Filters' from 'telegram.ext' (C:\Program Files\Python311\Lib\site-packages\telegram\ext\__init__.py)
>>>
>>> # Função para editar mensagens
>>> def edit_message(update: Update, context: CallbackContext) -> None:
...     message = update.message
...     new_text = message.text.replace("USDT", "/USDT")
...     message.edit_text(text=new_text)
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'CallbackContext' is not defined
>>> def main() -> None:
...     # Substitua 'YOUR_TOKEN' pelo token do seu bot
...     updater = Updater(token="6482257352:AAGUl1WFZjqRDet_YutghOJewrHgVhvfCpc", use_context=True)
...     dispatcher = updater.dispatcher
...
>>>     # Manipulador para editar mensagens
>>>     dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, edit_message))
  File "<stdin>", line 1
    dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, edit_message))
IndentationError: unexpected indent
>>>
>>>     # Inicie o bot
>>>     updater.start_polling()
  File "<stdin>", line 1
    updater.start_polling()
IndentationError: unexpected indent
>>>
>>>     # Mantenha o bot em execução até que Ctrl+C seja pressionado
>>>     updater.idle()
  File "<stdin>", line 1
    updater.idle()
IndentationError: unexpected indent
>>>
>>> if __name__ == '__main__':
...     main()
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "<stdin>", line 3, in main
TypeError: Updater.__init__() got an unexpected keyword argument 'token'
>>>
Se alguém puder me ajudar, eu tiver interesse em me ajudar a fazer este bot, ele é parte de um sistema maior, sou trader, tenho uma estratégia funcionando, estou tentando automatizar ela com telegram mas preciso editar as mensagens.

Fernando Alves

unread,
Sep 30, 2023, 12:26:20 AM9/30/23
to Python Brasil
Entendi o que você quer fazer, até agora usei apenas Pyrogram, telethon e aiogram ainda não tinha visto essa biblioteca. 
Pelo que vi aqui, em vez de importar "Filters" deve ser "filters", mas esse não é o único erro.

Tem muitos erros nesse código, parece que ouve uma atualização nessa lib que mudou muitas coisas.
Você tá tentando editar a mensagem enviada, mas acho que o "bot" em si, não consegue fazer isso, acho
que somente o "client" pode fazer isso, cada usuário pode editar a sua própria mensagem.
No caso, você poderia apenas tentar fazer um "reply" na mensagem que você quer corrigir com a forma correta da mensagem.

Mas tem como fazer isso pelo "client", que seria usar a própria conta do usuário como um "bot", no entanto seria o mesmo caso,
cada "client" consegue editar apenas a sua própria mensagem, pelo menos até onde eu já testei.
Reply all
Reply to author
Forward
0 new messages