python - Telegram TypeError:第一个参数必须是可调用的
问题描述
我正在尝试在 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 秒运行一次。
解决方案
根据[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")
推荐阅读
- c# - VSTO 的 Button.GetImage 的正确签名
- python-3.x - 使用来自 Selenium 的 find_element_by_name 获取错误消息
- python - 使用 TemplateDoesNotExist 的 Django 中的模板继承错误
- python - 我应该有一个有很多孩子的 django 视图还是只有很多视图
- python - 如何将 loguru 与标准记录器一起使用?
- java - java - 如何屏蔽嵌套 json 有效负载中的特定字段
- python - 如何在不使用有限元法或 python 编码中的刚度法的情况下制作任意桁架的 2D 绘图?
- sql - SQL Join 选择两个表的特征
- azure-data-factory - 在 Azure 数据流中将 1 行转换为多行
- reactjs - 如何将文件路径添加到 React 项目?(DRF)