如何使用DiscordPY获取Discord服务器中所有Webhooks的列表

时间:2020-06-07 10:19:09

标签: python python-3.x discord.py discord.py-rewrite

我可以使用discord.py或其他Discord bot python库获取discord服务器中所有webhook URL的列表吗?抱歉,这太短了,我不确定我还能为问题提供哪些其他信息。

我也尝试了以下方法。

import discord

client = command.Bot()

@client.event
async def on_message(message):
    message.content.lower()
    if message.author == client.user:
        return
    if message.content.startswith("webhook"):
        async def urls(ctx):
            @client.command()
            async def urls(ctx):
                content = "\n".join([f"{w.name} - {w.url}" for w in await ctx.guild.webhooks()])
                await ctx.send(content)

client.run('tokennumber')

1 个答案:

答案 0 :(得分:2)

这是一个使用列表理解的示例命令,该命令将返回每个Webhook的链接:

@bot.command()
async def urls(ctx):
    content = "\n".join([f"{w.name} - {w.url}" for w in await ctx.guild.webhooks()])
    await ctx.send(content)

以下是列表理解的作用:

@bot.command()
async def urls(ctx):
    wlist = []
    for w in await ctx.guild.webhooks():
        wlist.append(f"{w.name} - {w.url}")
    content = "\n".join(wlist)
    await ctx.send(content)

后期编辑:
使用您的on_message()事件:

import discord

client = commands.Bot() # add command_prefix kwarg if you plan on using cmd decorators

@client.event
async def on_message(message):
    message.content.lower()
    if message.author == client.user:
        return
    if message.content.startswith("webhook"):
        content = "\n".join([f"{w.name} - {w.url}" for w in await message.guild.webhooks()])
        await message.channel.send(content)

client.run('token')

如果您不想打印每个Webhooks的名称,则可以只加入每个url:

content = "\n".join([w.url for w in await message.guild.webhooks()])

参考: