通过discord.py发送嵌入
问题描述
我做了很多工作,通过带有discord.js的javascript,用discordAPI创建不和谐机器人。
我正在尝试使用python通过discord.py使用discord API和通过requests.py使用请求来创建我的第一个Discordbot。
我的目标是检查网站上的状态代码,当发送包含";状态代码的邮件时,它将在嵌入中回复网站的状态代码。
以下是我执行此操作的代码:
import discord
import requests
r = requests.get('redactedurl')
test = r.status_code
class MyClient(discord.Client):
async def on_ready(self):
print('Logged on as {0}!'.format(self.user))
async def on_message(self, message):
if (message.channel.id == redacted):
if "status code" in message.content:
print('Message from {0.author}: {0.content}'.format(message))
embed = discord.Embed(color=0x00ff00)
embed.title = "test"
embed.description = '**Status Code:** {r.status_code}'
await message.channel.send(embed=embed)
client = MyClient()
client.run('redacted')
以下是我希望任何人都能回答的问题列表,以帮助我:)
正如您在此处看到的:https://gyazo.com/f6ae7082486cade72389534a05655fec,这只会在嵌入中发送";{r.status_code}";,而不是实际的状态代码,这说明我做错了什么?
当我在花括号中看到0是什么意思。例如,是否有人可以向我解释&q;(‘以{0}!’.format(self.user)身份登录)(&q;)?因为我是python和discord.py的新手,所以我对这一行感到困惑。我知道结果是什么,但请原谅我的无知,这一切都有必要吗?
在&Quot;Send(Embed=Embed)中,为什么不能直接将SEND(Embed)放入(&q>)?
最后,我还可以做些什么来改进代码?
如果您能帮忙,非常感谢!
解决方案
在该行中设置嵌入描述,将
r.status_code
输出为字符串,而不是它包含的值。尝试embed.description = '**Status Code:** {0}'.format(r.status_code)
0类似于应该在那里的值的索引。例如,
/li>'{1}'.format(10, 20)
将打印出索引1处的值,在本例中为20。当您使用
send(embed)
时,机器人将以字符串形式发送嵌入内容,这看起来非常糟糕,如果您尝试发送它,您将明白我的意思。在本例中,我们必须指定要将该值赋给哪个参数。此函数接受kwargs
,它们是关键字参数,在本例中,Embed是此send()
函数中的kwargs
之一。此函数还接受其他kwargs
,如content, tts, delete_after, etc.
都有文档记录。您可以通过传入
kwargs
来简化创建嵌入,例如:discord.Embed(title='whatever title', color='whatever color')
如果您查看文档,discord.Embed()
可以支持更多参数。
TextChannel
并查找send()
函数,则可以找到更多受支持的参数以及discord.Embed()
。
相关文章