Untitled
unknown
python
3 years ago
3.2 kB
13
Indexable
# import neccesarey libraries for discord.py
import os
from dotenv import load_dotenv
from discord import app_commands
from discord.ext import commands
import discord
# import other neccesary libraies
import random
# initialize token
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
# style stuff
pri = '\033[0;0m' # reset color
sec = '\033[1;34m' # secondary color
acc = '\033[1;36m' # accent color
def cls():
os.system('cls' if os.name == 'nt' else 'clear')
# initialize bot
class Bot(commands.Bot):
async def setup_hook(self):
await bot.add_cog(Events(bot)) # Events
await bot.add_cog(test(bot)) # test
tree = bot.tree
await tree.sync(guild=discord.Object(976586132391338054))
# await tree.sync()
bot = Bot(command_prefix=(), intents=discord.Intents(
messages=True, guilds=True), application_id="977995844097802240")
# create event cog
class Events(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_ready(self):
print(f"""{pri}MotionLink is connected to:""")
print(f"""----------------------------------------------------""", end=' ')
guild = discord.utils.get(bot.guilds)
print(f"""\n{sec}{guild.name} {acc}[{guild.id}]""")
print(f"""{pri}----------------------------------------------------""")
# create command cogs
class test(commands.Cog):
def __init__(self, bot: commands.Bot) -> None:
self.bot: commands.Bot = bot
@commands.hybrid_command(name="ping")
async def ping_command(self, ctx: commands.Context) -> None:
"""
This command is actually used as an app command AND a message command.
This means it is invoked with `?ping` and `/ping` (once synced, of course).
"""
await ctx.send("Hello!")
# we use ctx.send and this will handle both the message command and app command of sending.
# added note: you can check if this command is invoked as an app command by checking the `ctx.interaction` attribute.
@commands.hybrid_group(name="parent")
async def parent_command(self, ctx: commands.Context) -> None:
"""
We even have the use of parents. This will work as usual for ext.commands but will be un-invokable for app commands.
This is a discord limitation as groups are un-invokable.
"""
... # nothing we want to do in here, I guess!
@parent_command.command(name="sub")
async def sub_command(self, ctx: commands.Context, argument: str) -> None:
"""
This subcommand can now be invoked with `?parent sub <arg>` or `/parent sub <arg>` (once synced).
"""
await ctx.send(f"Hello, you sent {argument}!")
@app_commands.command(name="command-1")
async def my_command(self, interaction: discord.Interaction) -> None:
""" djgasd ghasgd hasgd hagsd hags dhgashd gasdh gahsdg """
await interaction.response.send_message("Hello from command 1!", ephemeral=True)
# run the bot
bot.run(TOKEN)Editor is loading...