如果这个问题让您畏缩,我先向您道歉:)
我一直在做很多工作,通过带有discord.js的javascript用discord api创建discord机器人。
我正在尝试通过discord.py使用discord api和通过request.py的请求使用python创建我的第一个discord机器人。
我的目标是检查网站上的状态码,并且当发送包含“状态码”的消息时,它将以嵌入的形式回复该网站的状态码。
这是我的代码:
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时,它是什么意思。例如,有人可以向我解释“('以'{0}登录!'。format(self.user)))”吗?由于我是python和discord.py的新手,所以我对整行感到困惑。我知道结果是什么,但请原谅我的无知,这是否有必要?
在“ send(embed = embed)”中,为什么不能仅将send(embed)嵌入?
最后,还有什么我可以做的来改进代码?
非常感谢您能提供帮助!
答案 0 :(得分:0)
确定您的问题清单:
embed.description = f'**Status Code:** {r.status_code}'
或者,如果您想使用一致的格式设置字符串格式:
embed.description = '**Status Code:** {0}'.format(r.status_code)
embed
变量并将其作为{{1 }}变量。从而将其作为普通邮件发送,而不是将其嵌入。答案 1 :(得分:0)
在该行中设置嵌入描述,将r.status_code
作为字符串而不是其包含的值输出。尝试embed.description = '**Status Code:** {0}'.format(r.status_code)
0类似于应该存在的值的索引。例如,'{1}'.format(10, 20)
将打印出索引1处的值,在本例中为20。
当您使用send(embed)
时,该机器人最终将以字符串形式发送嵌入,该字符串看起来非常不正确,如果尝试发送它,您将明白我的意思。在这种情况下,我们必须指定将值分配给哪个参数。此函数接受kwargs
作为关键字参数,在这种情况下,embed是此kwargs
函数中的send()
之一。此功能也接受其他kwargs
,例如content, tts, delete_after, etc.
。所有功能均已记录。
您可以通过传入kwargs
来简化嵌入的创建,例如:discord.Embed(title='whatever title', color='whatever color')
如果您查看文档,discord.Embed()
可以支持更多参数。
以下是文档的链接:https://discordpy.readthedocs.io/en/latest/index.html
如果您搜索TextChannel
,并寻找send()
函数,则可以找到更多受支持的参数以及discord.Embed()
的参数。
答案 2 :(得分:0)
这是一个例子!
import discord
client = commands.Bot(command_prefix = '~')
@client.command()
async def embed(ctx):
embed=discord.Embed(title="Hello!",description="Im a embed text!")
await ctx.send(embed=embed)
client.run("TOKEN")