PYTHON 51
Main.py (https://github.com/indently/discord_tutorial_2024) By AndrzejL on 26th June 2024 01:49:42 AM
  1. from typing import Final
  2. import os
  3. from dotenv import load_dotenv
  4. from discord import Intents, Client, Message
  5. from responses import get_response
  6.  
  7. # STEP 0: LOAD OUR TOKEN FROM SOMEWHERE SAFE
  8. load_dotenv()
  9. TOKEN: Final[str] = os.getenv('DISCORD_TOKEN')
  10.  
  11. # STEP 1: BOT SETUP
  12. intents: Intents = Intents.default()
  13. intents.message_content = True  # NOQA
  14. client: Client = Client(intents=intents)
  15.  
  16.  
  17. # STEP 2: MESSAGE FUNCTIONALITY
  18. async def send_message(message: Message, user_message: str) -> None:
  19.     if not user_message:
  20.         print('(Message was empty because intents were not enabled probably)')
  21.         return
  22.  
  23.     if is_private := user_message[0] == '?':
  24.         user_message = user_message[1:]
  25.  
  26.     try:
  27.         response: str = get_response(user_message)
  28.         await message.author.send(response) if is_private else await message.channel.send(response)
  29.     except Exception as e:
  30.         print(e)
  31.  
  32.  
  33. # STEP 3: HANDLING THE STARTUP FOR OUR BOT
  34. @client.event
  35. async def on_ready() -> None:
  36.     print(f'{client.user} is now running!')
  37.  
  38.  
  39. # STEP 4: HANDLING INCOMING MESSAGES
  40. @client.event
  41. async def on_message(message: Message) -> None:
  42.     if message.author == client.user:
  43.         return
  44.  
  45.     username: str = str(message.author)
  46.     user_message: str = message.content
  47.     channel: str = str(message.channel)
  48.  
  49.     print(f'[{channel}] {username}: "{user_message}"')
  50.     await send_message(message, user_message)
  51.  
  52.  
  53. # STEP 5: MAIN ENTRY POINT
  54. def main() -> None:
  55.     client.run(token=TOKEN)
  56.  
  57.  
  58. if __name__ == '__main__':
  59.     main()

Paste is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.