updated repo to sample nextcord project.

This commit is contained in:
alwayscompiling
2022-06-22 22:13:15 -04:00
parent 692d43f8ae
commit b58e28aa6e
21 changed files with 300 additions and 2371 deletions
+30
View File
@@ -0,0 +1,30 @@
import nextcord
from nextcord.ext import commands
from utils import embed_success
class ApplicationCommandsExample(commands.Cog, name="App Commands"):
def __init__(self, bot: commands.Bot):
self.bot = bot
@nextcord.slash_command(description="Slash command that responds with 'Hello World'")
async def my_slash_cmd(self, interaction: nextcord.Interaction):
await interaction.send(embed=embed_success("Hello World!"))
@nextcord.slash_command(description="Slash command that repeats an argument")
async def my_slash_cmd_2(self, interaction: nextcord.Interaction, my_arg: str):
await interaction.send(embed=embed_success(f"You said: {my_arg}"))
@nextcord.user_command()
async def my_user_cmd(self, interaction: nextcord.Interaction, member: nextcord.Member):
await interaction.send(f"Hello, {member.mention}!")
@nextcord.message_command()
async def my_message_cmd(self, interaction: nextcord.Interaction, message: nextcord.Message):
await interaction.send(f"Hello, {message.author.mention}!")
# This function will be called when this extension is loaded.
# It is necessary to add these functions to the bot.
def setup(bot: commands.Bot):
bot.add_cog(ApplicationCommandsExample(bot))
+19
View File
@@ -0,0 +1,19 @@
from nextcord.ext import commands
from .help_command import NewHelpCommand
class HelpCog(commands.Cog):
def __init__(self, bot: commands.Bot):
self.bot = bot
self._original_help_command = bot.help_command
bot.help_command = NewHelpCommand()
bot.help_command.cog = self
def cog_unload(self):
self.bot.help_command = self._original_help_command
# setup functions for bot
def setup(bot: commands.Bot):
bot.add_cog(HelpCog(bot))
+80
View File
@@ -0,0 +1,80 @@
import config
import nextcord
from nextcord.embeds import EmptyEmbed
from nextcord.ext import commands
class NewHelpCommand(commands.MinimalHelpCommand):
"""Custom help command override using embeds"""
COLOUR = nextcord.Colour.blurple()
def get_ending_note(self):
"""Returns note to display at the bottom"""
invoked_with = self.invoked_with
return f"Use {config.BOT_PREFIX}{invoked_with} [command] for more info on a command."
def get_command_signature(self, command: commands.core.Command):
"""Retrieves the signature portion of the help page."""
return f"{command.qualified_name} {command.signature}"
async def send_bot_help(self, mapping: dict):
"""implements bot command help page"""
embed = nextcord.Embed(title="Bot Commands", colour=self.COLOUR)
avatar = self.context.bot.user.avatar
avatar_url = avatar.url if avatar else EmptyEmbed
embed.set_author(name=self.context.bot.user.name, icon_url=avatar_url)
description = self.context.bot.description
if description:
embed.description = description
for cog, commands in mapping.items():
name = "No Category" if cog is None else cog.qualified_name
filtered = await self.filter_commands(commands, sort=True)
if filtered:
# \u2002 = middle dot
value = "\u2002".join(f"{config.BOT_PREFIX}{c.name}" for c in filtered)
if cog and cog.description:
value = f"{cog.description}\n{value}"
embed.add_field(name=name, value=value)
embed.set_footer(text=self.get_ending_note())
await self.get_destination().send(embed=embed)
async def send_cog_help(self, cog: commands.Cog):
"""implements cog help page"""
embed = nextcord.Embed(title=f"{cog.qualified_name} Commands", colour=self.COLOUR)
if cog.description:
embed.description = cog.description
filtered = await self.filter_commands(cog.get_commands(), sort=True)
for command in filtered:
embed.add_field(
name=self.get_command_signature(command),
value=command.short_doc or "...",
inline=False,
)
embed.set_footer(text=self.get_ending_note())
await self.get_destination().send(embed=embed)
async def send_group_help(self, group: commands.Group):
"""implements group help page and command help page"""
embed = nextcord.Embed(title=group.qualified_name, colour=self.COLOUR)
if group.help:
embed.description = group.help
if isinstance(group, commands.Group):
filtered = await self.filter_commands(group.commands, sort=True)
for command in filtered:
embed.add_field(
name=self.get_command_signature(command),
value=command.short_doc or "...",
inline=False,
)
embed.set_footer(text=self.get_ending_note())
await self.get_destination().send(embed=embed)
# Use the same function as group help for command help
send_command_help = send_group_help # type: ignore
+26
View File
@@ -0,0 +1,26 @@
from nextcord.ext import commands
from utils import embed_success
class Ping(commands.Cog, name="Ping"):
def __init__(self, bot: commands.Bot):
self.bot = bot
@commands.command(name="ping")
async def ping(self, ctx: commands.Context):
"""A command which simply acknowledges the user's ping.
Usage:
```
?ping
```
"""
# log in console that a ping was received
print("Received ping")
# respond to the message
await ctx.send(embed=embed_success("Pong!"))
# This function will be called when this extension is loaded.
# It is necessary to add these functions to the bot.
def setup(bot: commands.Bot):
bot.add_cog(Ping(bot))