python 电报机器人无法获取电影数据

python telegram bot can't get movie data

我正在尝试做一个电报机器人,它在发送 ['pm'] 时向用户显示热门电影。但是,我无法从机器人那里得到正确的信息。这是我的代码:

import os
import telebot
from dotenv import load_dotenv
import movies

load_dotenv()

API_KEYS = os.getenv("API_KEYS")
bot = telebot.TeleBot(API_KEYS)

pMovies = movies.mPopular

@bot.message_handler(commands=['Greet'])
def greet(message):
  bot.reply_to(message, "Hey! Hows it going?")

@bot.message_handler(commands=['pm'])
def hello(message):
  
    for p in pMovies:
            pid = p[0]
            ptitle = p[1]
            poverview = p[2]
            pvote_average = p[3]
            prelease_date = p[4]
            response = pid, '|',ptitle, '|', poverview, '|', pvote_average, '|', prelease_date
  
    bot.send_message(message.chat.id, response)

bot.polling()

每当我在电报中键入 'pm' 时,我只会得到第一个电影 ID,而不是得到整个流行电影数据。如果你能帮我解决这个问题,我将不胜感激。

这是我收到的输出:

在这里bot.send_message(message.chat.id, list(response))

send_message 方法将第二个参数(即您的消息)作为字符串。但是你的响应变量是一个 tuple.

  1. 您可以将元组转换为字符串。

     response = pid, '|',ptitle, '|', poverview, '|', pvote_average, '|', prelease_date
     response_str=" ".join(response)
    

    bot.send_message(message.chat.id, (response_str))

  1. 您可以直接创建响应字符串而不是元组。

    response = f"{pid} | {ptitle} | {poverview} | {pvote_average} | {prelease_date}"