Telegram TypeError: первый аргумент должен быть вызываемым

1

Я пытаюсь сделать автоматическое расписание в Telegram. Он запускает первый запуск, но после его попытки зацикливания я получаю сообщение об ошибке:

TypeError: первый аргумент должен быть вызван

Мой код:

import time
import schedule
from pyrogram import Client, ReplyKeyboardMarkup, InlineKeyboardMarkup, InlineKeyboardButton
from pyrogram.api import functions, types
from pyrogram.api.errors import FloodWait


person1 = Client(
    session_name="*cenzored*",
    api_id=*cenzored*,
    api_hash="*cenzored*"
)

person2 = Client(
    session_name="*cenzored*",
    api_id=*cenzored*,
    api_hash="*cenzored*"
)
wick.start()

def Publish(session,dat,msgid,session_name):
    try:
        session.start()
        print("[%s]Posting..." % (session_name))
        session.send(
            functions.messages.GetBotCallbackAnswer(
                peer=session.resolve_peer("*cenzored*"),         
                msg_id=msgid,
                data=b'publish %d' % (dat)
            )
        )
        session.idle()
    except:
        print("Crashed,starting over")

schedule.every(0.3).minutes.do(Publish(person1,142129,12758, 'Dani')) // Here is the line is crashing.
schedule.every(0.3).minutes.do(Publish(person2,137351,13177, 'Wick'))

while 1:
    schedule.run_pending()
    time.sleep(1)

Проследить:

Pyrogram v0.7.4, Copyright (C) 2017-2018 Dan Tès <https://github.com/delivrance>
Licensed under the terms of the GNU Lesser General Public License v3 or later (LGPLv3+)

[person1]Posting...
3: 2018-06-16 12:07:26.529829 Retrying <class 'pyrogram.api.functions.messages.get_bot_callback_answer.GetBotCallbackAnswer'>
4: 2018-06-16 12:07:42.041309 Retrying <class 'pyrogram.api.functions.messages.get_bot_callback_answer.GetBotCallbackAnswer'>
Crashed,starting over
Traceback (most recent call last):
  File "C:\Users\343df\OneDrive\Desktop\Maor\python\tele\tele.py", line 35, in <module>
    schedule.every(0.3).minutes.do(Publish('ss',dani,140129,12758, 'Dani'))
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\schedule\__init__.py", line 385, in do
    self.job_func = functools.partial(job_func, *args, **kwargs)
TypeError: the first argument must be callable

В основном моя проблема заключается в том, что она не запускается (TypeError: the first argument must be callable) после первого раза и его планируется запустить каждые 0,3 секунды.

Теги:
arguments
telegram
scheduled-tasks

2 ответа

1

Согласно [readthedocs]: do (job_func, * args, ** kwargs), вам не нужно вызывать Publish, а просто передавать его, а затем список его аргументов (вызов будет выполняться по расписанию):

schedule.every(0.3).minutes.do(Publish, person1, 142129, 12758, "Dani")
schedule.every(0.3).minutes.do(Publish, person2, 137351, 13177, "Wick")
1

.do() ожидает, что вызываемый в качестве первого аргумента (и дополнительные аргументы для .do будут переданы этому вызываемому).

Поэтому вместо:

schedule.every(0.3).minutes.do(Publish(person1,142129,12758, 'Dani'))
schedule.every(0.3).minutes.do(Publish(person2,137351,13177, 'Wick'))

вы, скорее всего, захотите:

schedule.every(0.3).minutes.do(Publish, person1, 142129, 12758, 'Dani')
schedule.every(0.3).minutes.do(Publish, person2, 137351, 13177, 'Wick')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню