如何一次提取一个值?
How to extract one value at a time?
我正在尝试使用 Telebot 模块添加“/fact”命令,其中 return 是关于 API 中的狗的事实。但是,我希望它一次只 return 一个事实,并且每次都是一个新事实。我只是不知道如何处理这个问题。这是我的代码:
@bot.message_handler(commands=['fact'])
def get_fact(message):
index = 0
while True:
facts = requests.get('https://dog-facts-api.herokuapp.com/api/v1/resources/dogs?index=' + str(index)).json()
f = facts[0]['fact']
index += 1
bot.send_message(message.chat.id, f)
或:
@bot.message_handler(commands=['fact'])
def get_fact(message):
facts = requests.get('https://dog-facts-api.herokuapp.com/api/v1/resources/dogs/all').json()
f = list(facts)
iterator = iter(f)
bot.send_message(message.chat.id, iterator.__next__()['fact'])
您需要在命令函数定义之外初始化索引,这样它就不会每次都被重置,这样您就可以从狗的事实中获取一个事实 API 并确认已收到一个事实来自 JSON 负载。如果为空,则将 factIndex 重置为 1 并重新开始,这样每次都会显示一个新事实,直到到达事实列表的末尾。
factIndex = 1 # Start the index
@bot.message_handler(commands=['fact'])
def get_fact(message):
facts = json.loads(requests.get("https://dog-facts-api.herokuapp.com/api/v1/resources/dogs?index=" + str(factIndex)).content)
# Check to see if we obtained a fact
if (not facts): # If we got not fact
factIndex = 1 # Reset the index
facts = json.loads(requests.get("https://dog-facts-api.herokuapp.com/api/v1/resources/dogs?index=" + str(factIndex)).content)
bot.send_message(message.chat.id, facts[0]["fact"])
我正在尝试使用 Telebot 模块添加“/fact”命令,其中 return 是关于 API 中的狗的事实。但是,我希望它一次只 return 一个事实,并且每次都是一个新事实。我只是不知道如何处理这个问题。这是我的代码:
@bot.message_handler(commands=['fact'])
def get_fact(message):
index = 0
while True:
facts = requests.get('https://dog-facts-api.herokuapp.com/api/v1/resources/dogs?index=' + str(index)).json()
f = facts[0]['fact']
index += 1
bot.send_message(message.chat.id, f)
或:
@bot.message_handler(commands=['fact'])
def get_fact(message):
facts = requests.get('https://dog-facts-api.herokuapp.com/api/v1/resources/dogs/all').json()
f = list(facts)
iterator = iter(f)
bot.send_message(message.chat.id, iterator.__next__()['fact'])
您需要在命令函数定义之外初始化索引,这样它就不会每次都被重置,这样您就可以从狗的事实中获取一个事实 API 并确认已收到一个事实来自 JSON 负载。如果为空,则将 factIndex 重置为 1 并重新开始,这样每次都会显示一个新事实,直到到达事实列表的末尾。
factIndex = 1 # Start the index
@bot.message_handler(commands=['fact'])
def get_fact(message):
facts = json.loads(requests.get("https://dog-facts-api.herokuapp.com/api/v1/resources/dogs?index=" + str(factIndex)).content)
# Check to see if we obtained a fact
if (not facts): # If we got not fact
factIndex = 1 # Reset the index
facts = json.loads(requests.get("https://dog-facts-api.herokuapp.com/api/v1/resources/dogs?index=" + str(factIndex)).content)
bot.send_message(message.chat.id, facts[0]["fact"])