Python开发discord机器人时如何重载网页获取不同图片
问题根因
代码中图片地址写死为固定值https://thispersondoesnotexist.com/image,Discord加载嵌入内容时会对完全一致的资源URL做持久化缓存,后续所有相同URL的请求都会直接返回已缓存的第一张图,不会重新向源站请求新生成的图片资源。
修复方法
不需要实现复杂的网页重载逻辑,只需要在每次构造图片URL时拼接一个动态变化的无意义查询参数,让每次请求的URL唯一,即可强制Discord绕过缓存,从源站拉取新的AI生成人像。
修复后代码示例
import time import discord from discord.ext import commands # 此处保留你项目中原本的bot初始化配置即可 client = commands.Bot(command_prefix="!", intents=discord.Intents.default()) @client.command() async def tpdne(ctx): # 拼接当前时间戳作为防缓存参数,保证每次请求的URL唯一 unique_img_url = f"https://thispersondoesnotexist.com/image?nocache={int(time.time())}" embed = discord.Embed(colour=discord.Colour.orange(), timestamp=ctx.message.created_at) embed.set_image(url=unique_img_url) await ctx.send(embed=embed)
注意事项
- 目标图片源站会自动忽略不识别的查询参数,拼接额外参数不会导致请求失败,每次请求都会返回新生成的虚构人像图。
- 防缓存参数的取值只要保证每次指令调用时唯一即可,优先使用时间戳作为参数值,相比随机数几乎不会出现重复值,稳定性更高,禁止使用固定值作为参数,否则依然会命中缓存。
内容的提问来源于stack exchange,提问作者Boli149012
相关产品推荐
相关产品推荐

