discord.py-如何进行参数发送某些内容?

时间:2020-07-29 05:12:44

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

我正在使用discord.py库来制作一个不和谐的机器人,就像一个数字测试纸。但是然后我需要添加一个参数(或主题),以使机器人程序为该主题发送某些测试纸,例如q!testpaper english将发送英语测试纸。

这是我目前的代码,位于Cog中:

from discord.ext import commands

class MyCog(commands.Cog):

    @commands.command()
    async def testpaper(self, ctx):
        testpaper = open("./testpaper.txt", "r").read()
        await ctx.send(f'Good luck taking the test!')
        await ctx.author.send(testpaper)

1 个答案:

答案 0 :(得分:0)

要获取其他参数,您可以在函数调用中传递它们。使用仅关键字表示法来匹配函数调用后传递的整个字符串(了解更多here)。

您还忘记在打开文件"./testpaper.txt"后将其关闭。这就是为什么在Python中打开文件的最佳方法是使用with open(...) as ...语法。

我建议使用JSON文件存储测试。这是一个示例:

testpaper.json

{
    "english": "PUT TESTPAPER HERE",
    "math": "PUT OTHER TESTPAPER HERE",
    ...
}

然后您访问特定的测试纸:

import discord, json
from discord.ext import commands

class MyCog(commands.Cog):

    @commands.command()
    async def testpaper(self, ctx, *, subject=None):
        if not subject:
            await ctx.send("Error: please input subject!")
            return

        subject = subject.lower() # Lower-case only
        with open("./testpaper.json") as f:
            content = json.load(f)

        try:
            paper = content[subject]
        except KeyError:
            await ctx.send("No paper named " + subject)
            return
        await ctx.send(f"Good luck taking the test!")
        await ctx.author.send(paper)