update.message.reply_text 工作正常,但我无法执行返回函数,因为它无法正确提取 context.user_data,因此它每 10 秒发送相同的消息
async def matching(update: Update, context: CallbackContext):
async def check_who_likes(context: CallbackContext):
try:
conn = connection_pool.get_connection()
cursor = conn.cursor()
user_id = update.message.from_user.id
cursor.execute("SELECT LikeUserID FROM Likes WHERE LikedUserID = %s", (user_id,))
likes = cursor.fetchall()
result = len(likes)
if len(likes) > 0:
await update.message.reply_text(f"{len(likes)}")
context.user_data['result'] = True
except Exception as e:
pass
finally:
cursor.close()
conn.close()
await asyncio.sleep(1)
job = context.job_queue.run_repeating(check_who_likes, interval=10, first=0,data={'result': None})
await job.run(context.application)
result = job.data['result']
if result:
return SHOW_WHO_LIKES
下面更正后的代码将数据拉出来并赋值为变量,但是这段代码的问题是它直接从SHOW_WHO_LIKES执行操作并返回到旧的匹配
注意:在SHOW_WHO_LIKES中,仅向用户发送一条消息,其中没有返回。
async def matching(update: Update, context: CallbackContext):
async def check_who_likes(context: CallbackContext):
try:
conn = connection_pool.get_connection()
cursor = conn.cursor()
user_id = update.message.from_user.id
cursor.execute("SELECT LikeUserID FROM Likes WHERE LikedUserID = %s", (user_id,))
likes = cursor.fetchall()
result = len(likes)
if len(likes) > 0:
await update.message.reply_text(f"{len(likes)}")
context.job.data = True
except Exception as e:
pass
finally:
cursor.close()
conn.close()
await asyncio.sleep(1)
job = context.job_queue.run_repeating(check_who_likes, interval=10, first=0, data=None)
await job.run(context.application)
result = job.data
if result:
return SHOW_WHO_LIKES