'How do I make it so that ctx is not of type 'interaction' (nextcord slash commands)?

I'm trying to create a music bot using nextcord slash commands and interactions. The command isn't fully finished yet, as I am having trouble getting it to even join the voice channel. I don't exactly know how interactions work yet but I'm assuming it's a similar concept as ctx. Below is my music.py cog:

import nextcord
from nextcord.ext import commands
from nextcord import Interaction

class Music(commands.Cog):
    def __init__(self, client):
        self.client = client

    guild_ids = ["Guild Ids Go Here"]

    #slash commands go under here
    @nextcord.slash_command(name="play", description="plays music in vc", guild_ids = guild_ids)
    async def play(self, interaction : Interaction, query: str):
        channel = interaction.author.voice.channel  #ERROR IS HERE
        try:
            await channel.connect()
            await interaction.response.send_message("The bot has joined vc.")
        except:
            await interaction.response.send_message("Failed to find voice channel.")


def setup(client):
    client.add_cog(Music(client))

I'm getting an error that says "'Interaction' object has no attribute 'author'. It occurs on line 15 in 'play' when it says 'channel = interaction.author.voice.channel'. I think this means that this isn't the right way to go about getting the author's voice channel. If this is the case, is there a better, working method?



Solution 1:[1]

  1. In nextcord interaction, message author is interaction.user, channel is interaction.channel.

  2. You also can send interaction message by interaction.send instead of interaction.response.send_message. It's much shorter and easier to read.

  3. If you want to send a normal message without using interaction, try interaction.channel.send. It's similar to ctx.channel.send in application command

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dharman