PYTHON 49
Main.py (Andrzej.Langow.ski) By AndrzejL on 26th June 2024 01:52:50 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.         response1: str = str(message.author.name)
  28.         response2: str = get_response(user_message)
  29.         response: str = '@'+response1 + ' ' + response2
  30.         await message.author.send(response) if is_private else await message.channel.send(response)
  31.     except Exception as e:
  32.         print(e)
  33.  
  34.  
  35. # STEP 3: HANDLING THE STARTUP FOR OUR BOT
  36. @client.event
  37. async def on_ready() -> None:
  38.     print(f'{client.user} is now running!')
  39.  
  40.  
  41. # STEP 4: HANDLING INCOMING MESSAGES
  42. @client.event
  43. async def on_message(message: Message) -> None:
  44.     if message.author == client.user:
  45.         return
  46.  
  47.     username: str = str(message.author)
  48.     user_message: str = message.content
  49.     channel: str = str(message.channel)
  50.  
  51.     print(f'[{channel}] {username}: "{user_message}"')
  52.     await send_message(message, user_message)
  53.  
  54.  
  55. # STEP 5: MAIN ENTRY POINT
  56. def main() -> None:
  57.     client.run(token=TOKEN)
  58.  
  59.  
  60. if __name__ == '__main__':
  61.     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.