diff --git a/.env b/.env
new file mode 100644
index 0000000..ee5a896
--- /dev/null
+++ b/.env
@@ -0,0 +1 @@
+DISCORD_TOKEN=MTM1NzQyNTQzNjAxNDkzNjA3NA.G_Iphl.ddfL8lYLJJs3OAyFBwi9Pn4V4Xe57ptualP_Mc
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/ansibleVaultSettings.xml b/.idea/ansibleVaultSettings.xml
new file mode 100644
index 0000000..7c0cf63
--- /dev/null
+++ b/.idea/ansibleVaultSettings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..453c8eb
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..492b95f
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/tutorial-idently.iml b/.idea/tutorial-idently.iml
new file mode 100644
index 0000000..74d515a
--- /dev/null
+++ b/.idea/tutorial-idently.iml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..73140ce
--- /dev/null
+++ b/main.py
@@ -0,0 +1,52 @@
+from typing import Final
+import os
+from dotenv import load_dotenv
+from discord import Intents, Client, Message
+from responses import get_response
+
+load_dotenv()
+TOKEN: Final[str] = os.getenv('DISCORD_TOKEN')
+
+
+intents: Intents = Intents.default()
+intents.message_content = True # NOQA
+client: Client = Client(intents=intents)
+
+
+async def send_message(message: Message, user_message: str) -> None:
+ if not user_message:
+ print('(Message was empty because intents were not enabled probably)')
+ return
+ if is_private := user_message[0] == '?':
+ user_message = user_message[1:]
+
+ try:
+ response: str = get_response(user_message)
+ await message.author.send(response) if is_private else await message.channel.send(response)
+ except Exception as e:
+ print(e)
+
+
+@client.event
+async def on_ready() -> None:
+ print(f'{client.user} is now running')
+
+@client.event
+async def on_message(message: Message) -> None:
+ if message.author == client.user:
+ return
+
+ username: str = str(message.author)
+ user_message: str = message.content
+ channel: str = str(message.channel)
+
+ print(f'[{channel}] {username}: "{user_message}"')
+ await send_message(message, user_message)
+
+
+def main() -> None:
+ client.run(token=TOKEN)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..062c9a8
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,2 @@
+discord
+python-dotenv
diff --git a/responses.py b/responses.py
new file mode 100644
index 0000000..4b4bf97
--- /dev/null
+++ b/responses.py
@@ -0,0 +1,20 @@
+from random import choice, randint
+
+
+def get_response(user_input: str) -> str:
+ lowered: str = user_input.lower()
+
+ if lowered == '':
+ return 'Gut, du bist sehr still ...'
+ elif 'hello' in lowered:
+ return 'Hello there!'
+ elif 'how are you' in lowered:
+ return 'Good, Thanks!'
+ elif 'bye' in lowered:
+ return "See you later!"
+ elif 'roll dice' in lowered:
+ return f'you rolled: {randint(1, 6)}'
+ else:
+ return choice(['I do not understand...',
+ 'What are you talking abaout?',
+ 'Do you mind rephrasing that?'])