我正在尝试将我的 discord bot 命令转换为混合命令。
我尝试按照 discord.py 的文档进行操作,但没有成功。 主.py
import os
import discord
from discord.ext import commands
import asyncio
from dotenv import load_dotenv
load_dotenv()
DISCORD_TOKEN = os.getenv('DISCORD_TOKEN')
bot = commands.Bot(command_prefix="$",case_insensitive=True, intents=discord.Intents.all())
bot.remove_command('help')
@bot.event
async def on_ready():
print('Bot is ready')
async def load():
for filename in os.listdir("./cogs"):
if filename.endswith(".py"):
await bot.load_extension(f'cogs.{filename[:-3]}')
async def main():
await load()
await bot.start(DISCORD_TOKEN)
asyncio.run(main())
Minecal.py
import pandas as pd
import discord
from discord.ext import commands
#Mining Calculator Star Citizen
class Mine(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_ready(self):
print('Minecal.py is ready')
@commands.command(aliases=['m'])
async def mine(self,ctx, mineral, arg1: float, arg2: float):
mData = pd.read_csv('prices.csv')
for each in mData.iterrows():
if each[1]['mineral'] == mineral or each[1]['alias1'] == mineral or each[1]['alias2'] == mineral:
priceref = each[1]['priceref']
priceraw = each[1]['priceraw']
rmass = arg1
composition = arg2
mass = (arg2 * arg1) / 100
units = mass * 2
estimationref = units * priceref
estimationraw = units * priceraw
scu = units // 100
valueref = round(estimationref, 2)
valueraw = round(estimationraw, 2)
member = ctx.author
name = member.display_name
pfp = member.display_avatar
cmos = str(arg2) + '%'
embed = discord.Embed(title=each[1]['mineral'], colour = discord.Colour.dark_orange())
embed.set_author(name=f'{name}', icon_url="https://cdn-icons-png.flaticon.com/512/5767/5767812.png")
embed.set_thumbnail(url="https://cdn-icons-png.flaticon.com/512/9410/9410659.png")
embed.add_field(name='Mass', value=rmass, inline=True)
embed.add_field(name='Composition', value=cmos, inline=True)
embed.add_field(name ='SCU Units', value=scu, inline=False)
embed.add_field(name='Value Raw', value=valueraw, inline=True)
embed.add_field(name='Value Refined', value=valueref, inline=True)
embed.set_footer(text='Profit\'s do not reflect refining fees', icon_url="https://cdn-icons-png.flaticon.com/512/4340/4340168.png")
await ctx.send(embed=embed)
break
async def setup(bot):
await bot.add_cog(Mine(bot))
价格.cvs
mineral,priceref,priceraw,alias1,alias2
Quantinium,88.00,44.00,q,quantinium
Bexalite,40.48,22.50,bex,bexalite
Taranite,35.19,16.29,tar,taranite
Borase,24.63,16.29,bor,borase
Laranite,31.01,15.51,lar,laranite
Agricium,27.50,13.75,agr,agricium
Hephaestanite,15.83,7.38,hep,hephaestanite
Titanium,8.90,4.47,tit,titanium
Diamond,7.35,3.68,dia,diamond
Gold,6.41,3.20,g,gold
Copper,6.15,2.87,cop,copper
Beryl,4.35,2.21,ber,beryl
Tungsten,4.05,2.05,tun,tungsten
Corundum,2.70,1.35,cor,corundum
Quartz,1.55,0.78,qua,quartz
Aluminium,1.29,0.67,alu,aluminium
Inert Material,0.02,0.02,inert,inter material
我对这一切都很陌生,所以我为我的菜鸟道歉!
我已经尝试按照帮助文档进行设置,但我一直遇到错误。