我正在使用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)
答案 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)