我正在尝试制作一个新的Discord机器人,并找到一种使用Discord实现的新的斜杠命令菜单的方法。我让它来执行我的命令,但我的机器人不能执行命令。每次我尝试这样做,它都说命令失败了。这是我的代码,但没有我的一些个人信息(如id和其他信息):
#Imports
import discord
from discord.ext.commands import bot
from discord.colour import Color
from discord.ext import commands
import requests
import json
#Global Variables
token = "<bot_token"
bot = commands.Bot(command_prefix='/', case_insensitive=True)
TRN_API_Key = "<my_TRN_API_Key"
header = {'TRN-Api-Key': '<my_TRN_API_Key>' ,
'Accept' : 'application/json' ,
'Accept-Encoding': 'gzip'
}
discord_header = {
"Authorization": "Bot <bot_id>"
}
discord_commands = {
"name": "sgstatslt",
"type": 1,
"description": "Splitgate Lifttime Stats from Tracker.gg",
"options": [{
"name": "platform",
"description": "What platform is used",
"type": 3,
"required": True,
"choices": [
{
"name": "Playstation",
"value": "psn"
},
{
"name": "Xbox",
"value": "xbl"
},
{
"name": "Steam",
"value": "steam"
}
]
},
{
"name": "id",
"description": "Either your SteamID64, XBL GT, or PSN Username",
"type": 3,
"required": True
}
]
}
discord_url = "https://discord.com/api/v8/applications/<my_discord_app_id>/commands"
#Startup Process
@bot.event
async def on_ready():
await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name='people play Splitgate'))
requests.post(discord_url, headers=discord_header, json=discord_commands)
print('Bot is ready for use')
#Help Command
bot.remove_command('help')
#(place help command here)
#Splitgate Commands
@bot.command()
async def sgstatslt(ctx, platform, uid):
embed = discord.Embed(title='Splitgate Lifetime Overview data', color=0xFF0000)
embed.set_footer(text='Bot made by StarAssassin64')
r = requests.get(f'https://public-api.tracker.gg/v2/splitgate/standard/profile/{platform}/{uid}', headers=header)
data = r.json()
name = data['data']['platformInfo']['platformUserHandle']
if data['data']['platformInfo']['platformSlug'] == 'psn':
logo = ' <:pslogo:888941851942481950>'
elif data['data']['platformInfo']['platformSlug'] == 'steam':
logo = ' <:steamlogo:888941969487839232>'
else:
logo = ' <:xblogo:888941921278521364>'
points = data['data']['segments'][0]['stats']['points']['displayValue']
kills = data['data']['segments'][0]['stats']['kills']['displayValue']
killsper = str(data['data']['segments'][0]['stats']['kills']['percentile'])
assists = data['data']['segments'][0]['stats']['assists']['displayValue']
deaths = data['data']['segments'][0]['stats']['deaths']['displayValue']
teabags = data['data']['segments'][0]['stats']['teabags']['displayValue']
matches = data['data']['segments'][0]['stats']['matchesPlayed']['displayValue']
wins = data['data']['segments'][0]['stats']['wins']['displayValue']
winper = str(data['data']['segments'][0]['stats']['wins']['percentile'])
losses = data['data']['segments'][0]['stats']['losses']['displayValue']
wlratio = data['data']['segments'][0]['stats']['wlPercentage']['displayValue']
wlratioper = str(data['data']['segments'][0]['stats']['wins']['percentile'])
accuracy = data['data']['segments'][0]['stats']['shotsAccuracy']['displayValue']
kd = data['data']['segments'][0]['stats']['kd']['displayValue']
kdper = str(data['data']['segments'][0]['stats']['kd']['percentile'])
try:
comprank = data['data']['segments'][0]['stats']['rankLevel']['metadata']['rankName']
except KeyError:
comprank = "None"
try:
comprank_imgurl = data['data']['segments'][0]['stats']['rankLevel']['metadata']['imageUrl']
except KeyError:
comprank_imgurl = "https://static.wikia.nocookie.net/splitgate_gamepedia_en/images/a/a7/No_Rank_-_Rank_-_Splitgate.png/revision/latest/scale-to-width-down/50?cb=20210809111258"
lvl = data['data']['segments'][0]['stats']['progressionLevel']['displayValue']
embed.add_field(name=f"data for:", value=f"{name}{logo}")
embed.add_field(name='Kill data:', value=f'Kills: {kills} | Percentile: {killsper} | Assists: {assists} | Deaths: {deaths}')
embed.add_field(name='Match data:', value=f'Matches: {matches} | Wins: {wins} | Win Percentile: {winper} | Losses: {losses} | W/L Ratio: {wlratio} | W/L Ratio Percentile: {wlratioper}')
embed.add_field(name='Gameplay data:', value=f'Accuracy:{accuracy} | K/D:{kd} | K/D Percentile: {kdper}')
embed.add_field(name='Other data:', value=f'Rank: {comprank} | Level: {lvl} | Total Earned Points: {points} | Teabags: {teabags}')
embed.set_thumbnail(url=comprank_imgurl)
await ctx.send(embed=embed)
#Bot run stuff
bot.run(token, bot=True)
如果有什么我需要补充的,那太好了
目前没有回答
相关问题 更多 >
编程相关推荐