【问题标题】:Using Adf.ly with Discord.py将 Adf.ly 与 Discord.py 一起使用
【发布时间】:2019-01-28 03:46:59
【问题描述】:

所以我正在使用 MurkAPI 并得到了帮助,但我似乎无法得到它,所以当有人使用 $adfly 和一个作为 adfly 缩短链接的 url 时,机器人通过返回链接API并进入机器人。这是我当前的代码。

@commands.command(pass_context=True)
async def adfly(self, ctx):
    async with aiohttp.ClientSession() as session:
            await self.client.say(await fetch_adfly(session))
async def fetch_adfly(session):
    async with session.get(adfly_url) as response:
        return await response.text()

我有 MURKKEY 工作,但是,我无法让 URL 部分工作。

adfly_url = 'https://murkapi.com/adfly.php?key={}&url={}'.format(MURKKEY)

【问题讨论】:

  • 网址的哪一部分不起作用?另外,您的命令没有 url 参数,您的意思是添加一个吗?
  • 所以基本上用户喜欢$adfly(adfly链接),机器人会返回adfly链接后面的链接。我只是无法弄清楚那部分,因为我对 Python 不是很擅长。是的,我的意思是添加一个

标签: discord.py


【解决方案1】:

如果fetch_adfly 旨在处理将您的url 转换为adfly url,则您需要该函数中的会话。我们不想传递会话,而是传递我们想要转换的url。这可能会给我们类似的东西:

async def fetch_adfly(url):
  async with aiohttp.ClientSession() as session:
    adfly_url = 'https://murkapi.com/adfly.php?key={}&url={}'.format(MURKKEY, url)
    async with session.get(adfly_url) as response:
        return await response.text()

然后,您想在命令中添加url 参数并将其传递给您的函数:

@commands.command(pass_context=True)
async def adfly(self, ctx, url):
  await self.client.say(await fetch_adfly(url))

FWIW,我建议validating URLs

【讨论】:

  • 它应该将一个 adfly 链接转换成它背后的链接,这是通过 API 完成的
  • 您能否说明预期行为与此解决方案有何不同?
  • 使用您的解决方案时,我会执行 $adfly(Adfly 链接我想从它后面获取实际链接)它说找不到 URL。我想要它,所以当有人执行 $adfly (adfly url) 时,他们会得到 adfly 链接背后的真实 URL
  • 执行print(adfly_url) 并查看它试图调用的完整网址是什么。但是,听起来“未找到”问题可能在 murkapi 结束。
  • 这就是他们的结局,我通过浏览器调用了API并得到了相同的结果。我已就此问题联系 MurkAPI 工作人员。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
  • 2022-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多