如何编码我的机器人以从一个命令生成随机图像

时间:2018-09-09 22:29:02

标签: python discord.py

在决定发布此帖子之前,我已经进行了查看。我从答案中尝试了一些代码,但是它们对我没有用。请注意,我是一般的编码新手。我现在开始使用Python大约一周了。我设法对Discord机器人进行了编码,以从一个命令生成随机图像,但是我认为我做的不正确。图像是随机发送的,但是它们的链接显示在漫游器的消息中。这是我的代码:

client = Bot(command_prefix=BOT_PREFIX)

@client.event
async def on_message(message):
    if message.content.upper().startswith("?DOG"):
        jessie1 = "https://cdn.discordapp.com/attachments/432563417887277060/484484259386621993/22B25E7A-3157-4C23-B889-47ECFE8A15A9.jpg"
        snowy = "https://cdn.discordapp.com/attachments/487045791697862666/487390822485065749/824B6151-E818-49A4-A564-C2C752ED6384.jpg"
        await client.send_message(message.channel, random.choice([snowy, jessie1]))

我现在以两个图像为例,因为我不想同时包含更多图像。

我能够使用一个命令随机生成这两个图像,但是我不知道如何编码,以便它们在发送图像时不会出现在机器人的消息中。

我想知道是否有一种方法可以在不对当前代码进行较大更改的情况下进行操作。但是,如果有一种有效/正确的方法,我很乐意听取您的建议,以获得更好的体验。

如果一切顺利,我还想添加一条消息,让机器人说出何时发送这些图像。我确实对此有想法,但是我需要先解决第一个问题xD

3 个答案:

答案 0 :(得分:0)

我对“ discord”的了解仅是我在过去30年代所读的内容,但以下是我想到的一些事情:

“客户端”对象从何而来?如果显示链接与不显示之类的东西在您端甚至是可控制的,我敢打赌,这是您可以在客户端上设置的一个选项。是否有client.someattr?喜欢client.show_link=False?或者,您可以传递给构造函数吗?

client = Client(foo, bar, show_links=False)

或者...也许不是要发送文本(这就是您正在做的事情),而是要构造并发送某种“图像”对象...?

img1 = Image(url='...')
img2 = Image(local_file='...')
client.send_message(message.channel, random.choice([img2, img1]))

请注意,这些都是100%的猜测,无需阅读文档。这些都是基于对许多不同的库,API的熟悉。

对于通知您的问题,我猜也是一样。我需要查看更多文档。这也可能不是您可以控制的,无论您是否喜欢,另一端都会看到此信息

答案 1 :(得分:0)

根据documentation,您不能像从本地来源上传图片一样,可以

使用send_file

从本地源上传
await client.send_file(message.channel, 'my_image.png')

嵌入网址

import discord

embed = discord.Embed()  
embed.set_image(url = random.choice([jessie1,snowy]))  
await client.send_message(message.channel,embed=embed)

答案 2 :(得分:0)

在命令中,您应该创建一个Image对象列表,并<option value='test'>item1: test 1</option><option value='test2'>item1: test 2</option>

如上所述,您应先阅读文档,然后再问这里。另外,堆栈溢出也无法快速获得答案,这是位于https://discord.gg/r3sSKJJ的discord.py支持服务器。 最后一点,该库的新版本即将发布,其中引入了一些重大更改,有关here的内容,可以阅读。