如何将此 discord bot 命令转换为混合命令?

问题描述 投票:0回答:0

我正在尝试将我的 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

我对这一切都很陌生,所以我为我的菜鸟道歉!

我已经尝试按照帮助文档进行设置,但我一直遇到错误。

python discord bots
© www.soinside.com 2019 - 2024. All rights reserved.