So my code is basically copied from a walktrough for making a discord bot use chatgpt.

Im using Pycharm for the project.

This would be the main - code:

from typing import Final
import os
import discord
from dotenv import load_dotenv
from chatgpt_ai.openai import chatgpt_response

load_dotenv()
TOKEN: Final[str] = os.getenv('DISCORD_TOKEN')

class MyClient(discord.Client):
    async def on_ready(self):
        print("Successfully logged in as: ", self.user)

    async  def on_message(self, message):
        print(message.content)
        if message.author == self.user:
            return
        command, user_message=None, None

    **for text in ['/ai', '/bot', 'chatgpt']:**
        if message.content.startswith(text):
            command = message.content.split('')[0]
            user_message = message.content.replace(text, '')
            print(command, user_message)

        if command == '/ai' or command == '/bot' or command == '/chatgpt':
            bot_response = chatgpt_response(prompt=user_message)
            await message.channel.send(f"Answer: {bot_response}")

    intents = discord.Intents.default()
    intents.message_content = True

    client = MyClient(intents=intents)




Terminal error code: 

File "C:\Users\Flavi\PycharmProjects\discord_flavio_bot\discord_bot\main.py", line 28
    await message.channel.send(f"Answer: {bot_response}")
IndentationError: unexpected indent

whats also weird - is that from line**for text in ['/ai', '/bot', 'chatgpt']**:

everly line with "message" is marked as error with suggestions to import from "email"....

I tried various things, checked my code for errors, spellchecking and see if i missed something within the walktrough. But also its my very first attempt on a python project so i might just be to inexcpirienced to even know where to look for the error.enter image description here

1

There are 1 best solutions below

0
Kenzo Staelens On BEST ANSWER

it seems like you made a mistake in your indentation starting at the for loop. Python indentation determines the scope where code runs, message cannot be found because it is out of scope (because it's missing a level of indentation)

i believe indenting 20 to 28 and unindenting the rest after should fix your issue

async def on_message(self, message):
    print(message.content)
    if message.author == self.user:
        return
    command, user_message=None, None

    for text in ['/ai', '/bot', 'chatgpt']:**
        if message.content.startswith(text):
            command = message.content.split('')[0]
            user_message = message.content.replace(text, '')
            print(command, user_message)

        if command == '/ai' or command == '/bot' or command == '/chatgpt':
            bot_response = chatgpt_response(prompt=user_message)
            await message.channel.send(f"Answer: {bot_response}")