首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >discord.py --我怎么才能提出一个论点来发送某些东西呢?

discord.py --我怎么才能提出一个论点来发送某些东西呢?
EN

Stack Overflow用户
提问于 2020-07-29 05:12:44
回答 1查看 346关注 0票数 0

我正在使用discord.py库来制造一个不和谐的机器人,就像一张数字试卷。但是,我需要添加一个论点(或主题),使机器人为该主题发送特定的试卷,就像q!testpaper english将发送英语试卷一样。

这是我现在的代码,它在Cog

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 09:21:33

要获得其他参数,只需在函数调用中传递它们。使用只使用关键字的表示法来匹配函数调用后传递的整个字符串(了解更多的这里)。

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

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

testpaper.json

代码语言:javascript
复制
{
    "english": "PUT TESTPAPER HERE",
    "math": "PUT OTHER TESTPAPER HERE",
    ...
}

然后访问一个特定的测试文件:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63146719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档