migrate to repo

This commit is contained in:
Julian Nehring 2025-04-22 10:40:05 +02:00
parent 543ef15465
commit 55eec6c200
905 changed files with 8696 additions and 0 deletions

View File

@ -0,0 +1,13 @@
[Unit]
Description=Channel Bot Starten
After=multi-user.target
[Service]
#Type=simple
ExecStart=/home/ne_ju/pythonProjects/venv/bin/python /home/ne_ju/pythonProjects/discord/channelBot/main.py
User=ne_ju
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

207
channelBot/main.py Normal file
View File

@ -0,0 +1,207 @@
import json
import discord
from discord.ext import commands
intents = discord.Intents.all()
client = commands.Bot(command_prefix="!", intents=intents)
# settingsFile = 'settings.json'
settingsFile = '/home/ne_ju/pythonProjects/discord/channelBot/settings.json'
try:
settings = json.load(open(settingsFile, 'r'))
except FileNotFoundError:
settings = {}
json.dump(settings, open(settingsFile, 'w'))
@client.event
async def on_ready():
print('Logged in as {0.user.name}'.format(client))
@client.event
async def on_voice_state_update(member, before, after):
empty_channels = []
category = discord.utils.get(member.guild.categories, name=settings[str(member.guild.id)][0])
if after.channel in category.voice_channels or before.channel in category.voice_channels:
for channel in category.voice_channels:
if len(channel.members) == 0:
empty_channels.append(channel)
if len(empty_channels) == 0:
# print('No empty channels new channel created')
await member.guild.create_voice_channel(settings[str(member.guild.id)][1], category=category)
elif len(empty_channels) > 1:
# print('More than one empty channel deleting channels')
while len(empty_channels) > 1:
await empty_channels.pop().delete()
await empty_channels[0].edit(name=settings[str(member.guild.id)][1])
await empty_channels[0].edit(user_limit=0)
@client.event
async def on_guild_join(guild):
settings[guild.id] = ["Auto Voice Channels", "Voice Channel"]
json.dump(settings, open(settingsFile, 'w'))
# @commands.command(name="sync", description="Sync the slash commands")
# @commands.is_owner()
# async def sync(ctx):
# await client.tree.sync()
# await ctx.send("Synced commands", delete_after=5)
# await ctx.message.delete()
# client.add_command(sync)
# @client.tree.command(name="test", description="Test command")
# async def test(interaction: discord.Interaction):
# await interaction.response.send_message(content='test', ephemeral=True)
@client.tree.command(name="setup", description="Setup the auto voice channel system")
async def setup(interaction: discord.Interaction):
if interaction.user.guild_permissions.administrator is False:
await interaction.response.send_message(content='You must be an administrator to use this command.',
ephemeral=True)
return
if interaction.guild is None:
await interaction.response.send_message(content='This command can only be used in a server.', ephemeral=True)
return
if str(interaction.guild.id) not in settings:
print('No settings found in setup')
settings[str(interaction.guild.id)] = ["Auto Voice Channels", "Voice Channel"]
json.dump(settings, open(settingsFile, 'w'))
category = discord.utils.get(interaction.guild.categories, name=settings[str(interaction.guild.id)][0])
if category is None:
category = await interaction.guild.create_category(settings[str(interaction.guild.id)][0])
if len(category.voice_channels) == 0:
await interaction.guild.create_voice_channel(settings[str(interaction.guild.id)][1], category=category)
await interaction.response.send_message(content='Setup complete.', ephemeral=True)
@client.tree.command(name="setcategory", description="Set the name of the auto voice channel category")
@commands.has_permissions(administrator=True)
async def setcategory(interaction: discord.Interaction, category: str):
if interaction.user.guild_permissions.administrator is False:
await interaction.response.send_message(content='You must be an administrator to use this command.',
ephemeral=True)
return
if interaction.guild is None:
await interaction.response.send_message(content='This command can only be used in a server.',
ephemeral=True)
return
if str(interaction.guild.id) not in settings:
print('No settings found in setcategory')
settings[str(interaction.guild.id)] = ["Auto Voice Channels", "Voice Channel"]
cat = discord.utils.get(interaction.guild.categories, name=settings[str(interaction.guild.id)][0])
settings[str(interaction.guild.id)][0] = category
if cat is not None:
await cat.edit(name=category)
json.dump(settings, open(settingsFile, 'w'))
await interaction.response.send_message(content=f'Set category to {category}', ephemeral=True)
@client.tree.command(name="setchannel", description="Set the default name of the voice channels")
@commands.has_permissions(administrator=True)
async def setchannel(interaction: discord.Interaction, channel: str):
if interaction.user.guild_permissions.administrator is False:
await interaction.response.send_message(content='You must be an administrator to use this command.',
ephemeral=True)
return
if interaction.guild is None:
await interaction.response.send_message(content='This command can only be used in a server.',
ephemeral=True)
return
if str(interaction.guild.id) not in settings:
print('No settings found in setchannel')
settings[str(interaction.guild.id)] = ["Auto Voice Channels", "Voice Channel"]
cat = discord.utils.get(interaction.guild.categories, name=settings[str(interaction.guild.id)][0])
settings[str(interaction.guild.id)][1] = channel
if cat is not None:
for vc in cat.voice_channels:
if len(vc.members) == 0:
await vc.edit(name=channel)
json.dump(settings, open(settingsFile, 'w'))
await interaction.response.send_message(content=f'Set channel to {channel}', ephemeral=True)
@client.tree.command(name="check_settings", description="Check the settings for the server")
@commands.has_permissions(administrator=True)
async def check_settings(interaction: discord.Interaction):
if interaction.user.guild_permissions.administrator is False:
await interaction.response.send_message(content='You must be an administrator to use this command.',
ephemeral=True)
return
if interaction.guild is None:
await interaction.response.send_message(content='This command can only be used in a server.', ephemeral=True)
return
if str(interaction.guild.id) not in settings:
await interaction.response.send_message(content='No settings found for this server.', ephemeral=True)
return
await interaction.response.send_message(
content=f'Category: {settings[str(interaction.guild.id)][0]}\nChannel: {settings[str(interaction.guild.id)][1]}',
ephemeral=True)
@client.tree.command(name="rename", description="Rename your current voice channel")
async def rename(interaction: discord.Interaction, name: str):
if interaction.guild is None:
await interaction.response.send_message(content='This command can only be used in a server.', ephemeral=True)
return
if interaction.user.voice is None:
await interaction.response.send_message(content='You must be in a voice channel to use this command.',
ephemeral=True)
return
if interaction.user.voice.channel is None:
await interaction.response.send_message(content='You must be in a voice channel to use this command.',
ephemeral=True)
return
if interaction.user.voice.channel.name == name:
await interaction.response.send_message(content='The channel is already named that.', ephemeral=True)
return
if interaction.user.voice.channel.category.name == settings[str(interaction.user.guild.id)][0]:
await interaction.user.voice.channel.edit(name=name)
await interaction.response.send_message(content='Channel renamed.', ephemeral=True)
return
else:
await interaction.response.send_message(
content=f'You must be in an voice channel under the category {settings[str(interaction.user.guild.id)][0]} to use this command.',
ephemeral=True)
return
@client.tree.command(name="limit_users", description="Limit the number of users in your current voice channel. 0 for no limit.")
async def private(interaction: discord.Interaction, limit: int):
if limit < 0 or limit > 99:
await interaction.response.send_message(content='Limit must be between 0 and 99.', ephemeral=True)
return
if interaction.guild is None:
await interaction.response.send_message(content='This command can only be used in a server.', ephemeral=True)
return
if interaction.user.voice is None:
await interaction.response.send_message(content='You must be in a voice channel to use this command.',
ephemeral=True)
return
if interaction.user.voice.channel is None:
await interaction.response.send_message(content='You must be in a voice channel to use this command.',
ephemeral=True)
return
if interaction.user.voice.channel.category.name == settings[str(interaction.user.guild.id)][0]:
await interaction.user.voice.channel.edit(user_limit=limit)
await interaction.response.send_message(content='Channel limit set.', ephemeral=True)
return
else:
await interaction.response.send_message(
content=f'You must be in an voice channel under the category {settings[str(interaction.user.guild.id)][0]} to use this command.',
ephemeral=True)
return
client.run('MTE5ODkxMzE3NDQ1NjUxNjY1OQ.GaweoH.sp2xOTG3J_1dMH6PHFqLPySLio7AGcc5jsrpH0')

1
channelBot/settings.json Normal file
View File

@ -0,0 +1 @@
{"401045541200461824": ["hallo", "moin2"], "476116100627562496": ["Rede Raum", "Rede Ecke"]}

8
dasGlas/.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

11
dasGlas/.idea/dasGlas.iml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PackageRequirementsSettings">
<option name="removeUnused" value="true" />
</component>
</module>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
<serverData>
<paths name="pi@pi:22">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="pi@pi:22 agent">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="pi@pi:22 agent (1)">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
</serverData>
</component>
</project>

View File

@ -0,0 +1,26 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="DuplicatedCode" enabled="false" level="WEAK WARNING" enabled_by_default="false">
<Languages>
<language minSize="58" name="Python" />
</Languages>
</inspection_tool>
<inspection_tool class="JsonSchemaCompliance" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="E501" />
</list>
</option>
</inspection_tool>
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="N806" />
<option value="N802" />
</list>
</option>
</inspection_tool>
</profile>
</component>

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

4
dasGlas/.idea/misc.xml Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/dasGlas.iml" filepath="$PROJECT_DIR$/.idea/dasGlas.iml" />
</modules>
</component>
</project>

0
dasGlas/=1.5.0 Normal file
View File

0
dasGlas/=1.7.3 Normal file
View File

BIN
dasGlas/coin.mp3 Normal file

Binary file not shown.

13
dasGlas/das-glas.service Normal file
View File

@ -0,0 +1,13 @@
[Unit]
Description=Das Glas Starten
After=multi-user.target
[Service]
#Type=simple
ExecStart=/home/ne_ju/pythonProjects/venv/bin/python /home/ne_ju/pythonProjects/discord/dasGlas/main.py
User=ne_ju
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

58
dasGlas/glas.json Normal file
View File

@ -0,0 +1,58 @@
{
"Diana": {
"coin": 3,
"name": "Diana"
},
"Dirk": {
"coin": 129,
"name": "Dirk",
"witz": 36
},
"Felix (Ohren)": {
"coin": 1,
"name": "Felix (Ohren)"
},
"Freddy": {
"coin": 191,
"name": "Freddy",
"witz": 11
},
"Hendrik": {
"coin": 5,
"name": "Hendrik"
},
"Jens": {
"coin": 3,
"name": "Jens"
},
"Julian": {
"coin": 192,
"name": "Julian",
"witz": 50
},
"Maurice": {
"coin": 9,
"name": "Maurice"
},
"Paul": {
"coin": 2,
"name": "Paul"
},
"Ren\u00e9": {
"coin": 1,
"name": "Ren\u00e9"
},
"Simon": {
"coin": 3,
"name": "Simon"
},
"Stefan": {
"coin": 186,
"name": "Stefan",
"witz": 61
},
"primo x": {
"coin": 1,
"name": "primo x"
}
}

7
dasGlas/glasptr.json Normal file
View File

@ -0,0 +1,7 @@
{
"Chris": {
"coin": 2,
"name": "Chris",
"witz": 2
}
}

BIN
dasGlas/kein_Pardon.mp3 Normal file

Binary file not shown.

215
dasGlas/main.py Normal file
View File

@ -0,0 +1,215 @@
#!/usr/bin/env python3
import datetime
import json
from datetime import date
from pathlib import Path
import asyncio
import discord
from discord.ext import tasks
# Konstanten definieren------------------------------------------------------------------------------------
client = discord.Client(intents=discord.Intents.all())
glas_json = Path('/home/ne_ju/pythonProjects/discord/dasGlas/glas.json')
ch_coin = 'das-glas'
ch_witz = 'witzigkeit-kennt-keine-grenzen'
emo_coin = '\U0001FA99'
emo_sob = '\U0001f62d'
react_emo_money_with_wings = '\U0001F4B8'
react_emo_moneybag = '\U0001F4B0'
react_emo_smiling_face_with_tear = '\U0001f972'
snd_coin = '/home/ne_ju/pythonProjects/discord/dasGlas/coin.mp3'
snd_witz = '/home/ne_ju/pythonProjects/discord/dasGlas/kein_Pardon.mp3'
snd_test = '/home/ne_ju/pythonProjects/discord/dasGlas/test.mp3'
# JSON überprüfen/erstellen--------------------------------------------------------------------------------
if not glas_json.is_file():
glas_json.touch()
with open(glas_json, 'w') as f:
f.write('{}')
f.close()
# Sound abspielen------------------------------------------------------------------------------------------
async def play_sound(name, channel):
def dc(err):
async def wait_and_dc():
await asyncio.sleep(0.5)
await vc.disconnect()
fut = asyncio.run_coroutine_threadsafe(wait_and_dc(), client.loop)
try:
fut.result()
except:
print("error disconnecting")
if (channel == ch_coin):
sound = snd_coin
elif (channel == ch_witz):
sound = snd_witz
if not name.voice == None:
print(sound)
voicechannel = name.voice.channel
if voicechannel != None:
vc = await voicechannel.connect()
vc.play(discord.FFmpegPCMAudio(sound), after = dc)
# Stand erhöhen--------------------------------------------------------------------------------------------
def stand_plus(name, plus, channelname):
if channelname == ch_coin:
chanel = "coin"
elif channelname == ch_witz:
chanel = "witz"
with open(glas_json, "r+") as stand_json:
data = json.load(stand_json)
if not name in data:
data[name] = {"name": name, chanel: 0}
elif chanel not in data[name]:
data[name][chanel] = 0
data[name][chanel] = data[name][chanel] + plus
stand_json.seek(0)
stand_json.truncate()
json.dump(data, stand_json, indent=4, sort_keys=True)
# Aktuellen Stand ausgeben--------------------------------------------------------------------------------
async def stand_out(channel):
if channel.name == ch_coin:
chanel = "coin"
stdmsg = ['eine Münze in das Glas geworfen',
' Münzen in das Glas geworfen']
elif channel.name == ch_witz:
chanel = "witz"
stdmsg = ['einen schlechten Witz gemacht',
' schlechte Witze gemacht']
stand = list()
with open(glas_json, "r") as stand_json:
data = json.load(stand_json)
for x in data:
if chanel in data[x]:
stand.append([data[x][chanel], data[x]["name"]])
stand_json.close()
await channel.send('Der Stand ist:')
stand.sort(reverse=True)
for item in stand:
if item[0] == 1:
await channel.send(item[1] + ' hat ' + stdmsg[0])
else:
await channel.send(item[1] + ' hat ' + str(item[0]) + stdmsg[1])
# Reaktion auf Nachrichten--------------------------------------------------------------------------------
# \U0001FA99 - coin
# \U0001f62d - sob
# \U0001F4B8 - money with wings
# \U0001F4B0 - moneybag
# \U0001f972 - smiling face with tear
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
output.start()
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.channel.name == ch_coin:
emo = emo_coin
react_emo = react_emo_moneybag
multi_react_emo = react_emo_money_with_wings
elif message.channel.name == ch_witz:
emo = emo_sob
react_emo = react_emo_smiling_face_with_tear
multi_react_emo = react_emo_smiling_face_with_tear
if message.content.count(emo) > 0:
if len(message.mentions) > 0:
await message.add_reaction(multi_react_emo)
for j in message.mentions:
stand_plus(j.display_name, message.content.count(
emo), message.channel.name)
else:
await message.add_reaction(react_emo)
stand_plus(message.author.display_name,
message.content.count(emo), message.channel.name)
await play_sound(message.author, message.channel.name)
elif message.content.startswith('!test'):
await message.delete()
await play_sound(message.author, message.channel.name)
elif message.content.startswith('!stand'):
await message.delete()
for x in message.author.roles:
if str(x) == "Meh":
await stand_out(message.channel)
else:
await message.delete()
# Automatische Stand ausgabe------------------------------------------------------------------------------
@tasks.loop(hours=1)
async def output():
for guild in client.guilds:
if guild.name == 'Bärenkatapult':
if date.today().day == 1 and datetime.datetime.now().hour == 6:
await stand_out(discord.utils.get(guild.channels, name=ch_witz))
await stand_out(discord.utils.get(guild.channels, name=ch_coin))
# Channel verschiebung------------------------------------------------------------------------------------
@client.event
async def on_voice_state_update(member, before, after):
if after.channel is not None:
channel = after.channel
if channel.category.name == "Spiele":
if discord.utils.get(after.channel.guild.categories, name="belebt") == None:
await member.guild.create_category("belebt")
B = discord.utils.get(
after.channel.guild.categories, name="belebt")
await B.edit(position=3)
await channel.edit(category=B)
if before.channel is not None:
if before.channel.category.name == "belebt" and len(before.channel.members) == 0:
S = discord.utils.get(
before.channel.guild.categories, name="Spiele")
channel = before.channel
cat = channel.category
await channel.edit(category=S)
if len(cat.channels) == 0:
await cat.delete()
sorchan = ["0"]
for i in S.channels:
sorchan.append(i.name)
sorchan.remove("0")
sorchan.sort()
for i in range(len(sorchan)):
await discord.utils.get(before.channel.guild.channels, name=sorchan[i]).edit(position=i)
# --------------------------------------------------------------------------------------------------------
client.run('ODE1Mzc0MDc0NDU5OTc5ODM2.YDreSA.q494wu3zvinCJ6QiffrWvoUVibc')
# --------------------------------------------------------------------------------------------------------

217
dasGlas/main.py.bak Normal file
View File

@ -0,0 +1,217 @@
#!/usr/bin/env python3
import datetime
import json
from datetime import date
from pathlib import Path
import asyncio
import discord
from discord.ext import tasks
# Konstanten definieren------------------------------------------------------------------------------------
client = discord.Client(intents=discord.Intents.all())
glas_json = Path('/home/pi/pythonProjects/discord/dasGlas/glas.json')
ch_coin = 'das-glas'
ch_witz = 'witzigkeit-kennt-keine-grenzen'
emo_coin = '\U0001FA99'
emo_sob = '\U0001f62d'
react_emo_money_with_wings = '\U0001F4B8'
react_emo_moneybag = '\U0001F4B0'
react_emo_smiling_face_with_tear = '\U0001f972'
snd_coin = '/home/pi/pythonProjects/discord/dasGlas/coin.mp3'
snd_witz = '/home/pi/pythonProjects/discord/dasGlas/kein_Pardon.mp3'
snd_test = '/home/pi/pythonProjects/discord/dasGlas/test.mp3'
# JSON überprüfen/erstellen--------------------------------------------------------------------------------
if not glas_json.is_file():
glas_json.touch()
with open(glas_json, 'w') as f:
f.write('{}')
f.close()
# Sound abspielen------------------------------------------------------------------------------------------
async def play_sound(name, channel):
def dc_factory(vc):
def dc(err):
async def wait_and_dc():
await asyncio.sleep(0.5)
await vc.disconnect()
fut = asyncio.run_coroutine_threadsafe(wait_and_dc(), client.loop)
try:
fut.result()
except:
print("error disconnecting")
return dc
if (channel == ch_coin):
sound = snd_coin
elif (channel == ch_witz):
sound = snd_witz
if not name.voice == None:
print(sound)
voicechannel = name.voice.channel
if voicechannel != None:
vc = await voicechannel.connect()
vc.play(discord.FFmpegPCMAudio(sound), after = dc_factory(vc))
# Stand erhöhen--------------------------------------------------------------------------------------------
def stand_plus(name, plus, channelname):
if channelname == ch_coin:
chanel = "coin"
elif channelname == ch_witz:
chanel = "witz"
with open(glas_json, "r+") as stand_json:
data = json.load(stand_json)
if not name in data:
data[name] = {"name": name, chanel: 0}
elif chanel not in data[name]:
data[name][chanel] = 0
data[name][chanel] = data[name][chanel] + plus
stand_json.seek(0)
stand_json.truncate()
json.dump(data, stand_json, indent=4, sort_keys=True)
# Aktuellen Stand ausgeben--------------------------------------------------------------------------------
async def stand_out(channel):
if channel.name == ch_coin:
chanel = "coin"
stdmsg = ['eine Münze in das Glas geworfen',
' Münzen in das Glas geworfen']
elif channel.name == ch_witz:
chanel = "witz"
stdmsg = ['einen schlechten Witz gemacht',
' schlechte Witze gemacht']
stand = list()
with open(glas_json, "r") as stand_json:
data = json.load(stand_json)
for x in data:
if chanel in data[x]:
stand.append([data[x][chanel], data[x]["name"]])
stand_json.close()
await channel.send('Der Stand ist:')
stand.sort(reverse=True)
for item in stand:
if item[0] == 1:
await channel.send(item[1] + ' hat ' + stdmsg[0])
else:
await channel.send(item[1] + ' hat ' + str(item[0]) + stdmsg[1])
# Reaktion auf Nachrichten--------------------------------------------------------------------------------
# \U0001FA99 - coin
# \U0001f62d - sob
# \U0001F4B8 - money with wings
# \U0001F4B0 - moneybag
# \U0001f972 - smiling face with tear
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
output.start()
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.channel.name == ch_coin:
emo = emo_coin
react_emo = react_emo_moneybag
multi_react_emo = react_emo_money_with_wings
elif message.channel.name == ch_witz:
emo = emo_sob
react_emo = react_emo_smiling_face_with_tear
multi_react_emo = react_emo_smiling_face_with_tear
if message.content.count(emo) > 0:
if len(message.mentions) > 0:
await message.add_reaction(multi_react_emo)
for j in message.mentions:
stand_plus(j.display_name, message.content.count(
emo), message.channel.name)
else:
await message.add_reaction(react_emo)
stand_plus(message.author.display_name,
message.content.count(emo), message.channel.name)
await play_sound(message.author, message.channel.name)
elif message.content.startswith('!test'):
await message.delete()
await play_sound(message.author, message.channel.name)
elif message.content.startswith('!stand'):
await message.delete()
for x in message.author.roles:
if str(x) == "Meh":
await stand_out(message.channel)
else:
await message.delete()
# Automatische Stand ausgabe------------------------------------------------------------------------------
@tasks.loop(hours=1)
async def output():
for guild in client.guilds:
if guild.name == 'Bärenkatapult':
if date.today().day == 1 and datetime.datetime.now().hour == 6:
await stand_out(discord.utils.get(guild.channels, name=ch_witz))
await stand_out(discord.utils.get(guild.channels, name=ch_coin))
# Channel verschiebung------------------------------------------------------------------------------------
@client.event
async def on_voice_state_update(member, before, after):
if after.channel is not None:
channel = after.channel
if channel.category.name == "Spiele":
if discord.utils.get(after.channel.guild.categories, name="belebt") == None:
await member.guild.create_category("belebt")
B = discord.utils.get(
after.channel.guild.categories, name="belebt")
await B.edit(position=3)
await channel.edit(category=B)
if before.channel is not None:
if before.channel.category.name == "belebt" and len(before.channel.members) == 0:
S = discord.utils.get(
before.channel.guild.categories, name="Spiele")
channel = before.channel
cat = channel.category
await channel.edit(category=S)
if len(cat.channels) == 0:
await cat.delete()
sorchan = ["0"]
for i in S.channels:
sorchan.append(i.name)
sorchan.remove("0")
sorchan.sort()
for i in range(len(sorchan)):
await discord.utils.get(before.channel.guild.channels, name=sorchan[i]).edit(position=i)
# --------------------------------------------------------------------------------------------------------
client.run('ODE1Mzc0MDc0NDU5OTc5ODM2.YDreSA.q494wu3zvinCJ6QiffrWvoUVibc')
# --------------------------------------------------------------------------------------------------------

92
dasGlas/old/01.05.main.py Normal file
View File

@ -0,0 +1,92 @@
import configparser
import discord
import os
from pathlib import Path
client = discord.Client()
Config = configparser.ConfigParser()
#/home/pi/discord/jar-bot/
ini = Path('/home/pi/discord/jar-bot/count.ini')
if not ini.is_file():
f = open("c/home/pi/discord/jar-bot/count.ini", "x")
#repl.it
#ch_name = 'das-glas-ptr'
#pi
ch_name = 'das-glas'
#--------------------------------------------------------------------------------------------------------
async def dc(vc):
while True:
if not vc.is_playing():
await vc.disconnect()
return
#--------------------------------------------------------------------------------------------------------
async def play_coin(name):
voicechannel = name.voice.channel
if voicechannel != None:
vc = await voicechannel.connect()
vc.play(discord.FFmpegPCMAudio("/home/pi/discord/jar-bot/coin.mp3"))
await dc(vc)
#--------------------------------------------------------------------------------------------------------
#coin_plus(message.author.display_name,message.content.count('\U0001FA99'))
def coin_plus(name,plus):
Config.read(ini)
if Config.has_section(name):
count = Config.getint(name,'count')
count = count + plus
Config.set(name,'count',str(count))
else:
Config.add_section(name)
count = plus
Config.set(name,'count',str(count))
with open(ini, 'w') as configfile:
Config.write(configfile)
#--------------------------------------------------------------------------------------------------------
async def stand_out(chanel):
Config.read(ini)
stand = list()
await chanel.send('Der Stand ist:')
for x in Config.sections():
count = Config.getint(x,'count')
stand.append([count, x])
stand.sort(reverse=True)
for item in stand:
if item[0] == "1":
await chanel.send(item[1] + ' hat eine Münze in das Glas geworfen')
else:
await chanel.send(item[1] + ' hat '+ str(item[0]) +' Münzen in das Glas geworfen')
with open(ini, 'w') as configfile:
Config.write(configfile)
#--------------------------------------------------------------------------------------------------------
#\U0001FA99 - coin
#\U0001F4B8 - money with wings
#\U0001F4B0 - moneybag
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.channel.name == ch_name:
if message.content.count('\U0001FA99')>0:
if len(message.mentions)>0:
await message.add_reaction('\U0001F4B8')
for j in message.mentions:
coin_plus(j.display_name,message.content.count('\U0001FA99'))
else:
await message.add_reaction('\U0001F4B0')
coin_plus(message.author.display_name,message.content.count('\U0001FA99'))
await play_coin(message.author)
elif message.content.startswith('!stand'):
await message.delete()
for x in message.author.roles:
if str(x) == "Meh":
await stand_out(message.channel)
else:
await message.delete()
#--------------------------------------------------------------------------------------------------------
#repl.it
#client.run('ODI4Nzc4MTg0Nzg1OTIwMDIw.YGuh1Q.-MWOKUsNNBOzWFDYHjUtA-7umN0')
#pi
client.run('ODE1Mzc0MDc0NDU5OTc5ODM2.YDreSA.q494wu3zvinCJ6QiffrWvoUVibc')
#--------------------------------------------------------------------------------------------------------

View File

@ -0,0 +1,209 @@
#!/usr/bin/env python3
import configparser
import discord
import datetime
from discord.ext import tasks
from pathlib import Path
from datetime import date
client = discord.Client()
coin_config = configparser.ConfigParser()
witz_config = configparser.ConfigParser()
coin_ini = Path('/home/pi/discord/dasGlas/coin.ini')
if not coin_ini.is_file():
coin_ini.touch()
ch_coin = 'das-glas'
witz_ini = Path('/home/pi/discord/dasGlas/witz.ini')
if not witz_ini.is_file():
witz_ini.touch()
ch_witz = 'witzigkeit-kennt-keine-grenzen'
# --------------------------------------------------------------------------------------------------------
async def dc(vc):
while True:
if not vc.is_playing():
await vc.disconnect()
return
# --------------------------------------------------------------------------------------------------------
async def play_coin(name):
voicechannel = name.voice.channel
if voicechannel != None:
vc = await voicechannel.connect()
vc.play(discord.FFmpegPCMAudio("/home/pi/discord/dasGlas/coin.mp3"))
await dc(vc)
# --------------------------------------------------------------------------------------------------------
def coin_plus(name, plus):
coin_config.read(coin_ini)
if coin_config.has_section(name):
count = coin_config.getint(name, 'count')
count = count + plus
coin_config.set(name, 'count', str(count))
else:
coin_config.add_section(name)
count = plus
coin_config.set(name, 'count', str(count))
with open(coin_ini, 'w') as coin_configfile:
coin_config.write(coin_configfile)
# --------------------------------------------------------------------------------------------------------
async def coin_stand_out(chanel):
coin_config.read(coin_ini)
stand = list()
await chanel.send('Der Stand ist:')
for x in coin_config.sections():
count = coin_config.getint(x, 'count')
stand.append([count, x])
stand.sort(reverse = True)
for item in stand:
if item[0] == 1:
await chanel.send(item[1] + ' hat eine Münze in das Glas geworfen')
else:
await chanel.send(item[1] + ' hat ' + str(item[0]) + ' Münzen in das Glas geworfen')
with open(coin_ini, 'w') as coin_configfile:
coin_config.write(coin_configfile)
# --------------------------------------------------------------------------------------------------------
async def play_kein_Pardon(name):
voicechannel = name.voice.channel
if voicechannel != None:
vc = await voicechannel.connect()
vc.play(discord.FFmpegPCMAudio("/home/pi/discord/dasGlas/kein_Pardon.mp3"))
await dc(vc)
# --------------------------------------------------------------------------------------------------------
def witz_plus(name, plus):
witz_config.read(witz_ini)
if witz_config.has_section(name):
count = witz_config.getint(name, 'count')
count = count + plus
witz_config.set(name, 'count', str(count))
else:
witz_config.add_section(name)
count = plus
witz_config.set(name, 'count', str(count))
with open(witz_ini, 'w') as witz_configfile:
witz_config.write(witz_configfile)
# --------------------------------------------------------------------------------------------------------
async def witz_stand_out(chanel):
witz_config.read(witz_ini)
stand = list()
await chanel.send('Der Stand ist:')
for x in witz_config.sections():
count = witz_config.getint(x, 'count')
stand.append([count, x])
stand.sort(reverse = True)
for item in stand:
if item[0] == 1:
await chanel.send(item[1] + ' hat einen schlechten Witz gemacht')
else:
await chanel.send(item[1] + ' hat ' + str(item[0]) + ' schlechte Witze gemacht')
with open(witz_ini, 'w') as witz_configfile:
witz_config.write(witz_configfile)
# Reaktion auf Nachrichten--------------------------------------------------------------------------------
# \U0001FA99 - coin
# \U0001F4B8 - money with wings
# \U0001F4B0 - moneybag
# \U0001f62d - sob
# \U0001f972 - smiling face with tear
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
output.start()
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.channel.name == ch_coin:
if message.content.count('\U0001FA99') > 0:
if len(message.mentions) > 0:
await message.add_reaction('\U0001F4B8')
for j in message.mentions:
coin_plus(j.display_name, message.content.count('\U0001FA99'))
else:
await message.add_reaction('\U0001F4B0')
coin_plus(message.author.display_name, message.content.count('\U0001FA99'))
await play_coin(message.author)
elif message.content.startswith('!stand'):
await message.delete()
for x in message.author.roles:
if str(x) == "Meh":
await coin_stand_out(message.channel)
else:
await message.delete()
elif message.channel.name == ch_witz:
if message.content.count('\U0001f62d') > 0:
if len(message.mentions) > 0:
await message.add_reaction('\U0001f972')
for j in message.mentions:
witz_plus(j.display_name, message.content.count('\U0001f62d'))
else:
await message.add_reaction('\U0001f972')
witz_plus(message.author.display_name, message.content.count('\U0001f62d'))
await play_kein_Pardon(message.author)
elif message.content.startswith('!stand'):
await message.delete()
for x in message.author.roles:
if str(x) == "Meh":
await witz_stand_out(message.channel)
else:
await message.delete()
# Channel verschiebung------------------------------------------------------------------------------------
@client.event
async def on_voice_state_update(member, before, after):
if after.channel is not None:
channel = after.channel
if channel.category.name == "Spiele":
if discord.utils.get(after.channel.guild.categories, name = "belebt") == None:
await member.guild.create_category("belebt")
B = discord.utils.get(after.channel.guild.categories, name = "belebt")
await B.edit(position = 3)
await channel.edit(category = B)
if before.channel is not None:
if before.channel.category.name == "belebt" and len(before.channel.members) == 0:
S = discord.utils.get(before.channel.guild.categories, name = "Spiele")
channel = before.channel
cat = channel.category
await channel.edit(category = S)
if len(cat.channels) == 0:
await cat.delete()
sorchan = ["0"]
for i in S.channels:
sorchan.append(i.name)
sorchan.remove("0")
sorchan.sort()
for i in range(len(sorchan)):
await discord.utils.get(before.channel.guild.channels, name = sorchan[i]).edit(position = i)
# --------------------------------------------------------------------------------------------------------
@tasks.loop(hours = 1)
async def output():
for guild in client.guilds:
if guild.name == 'Bärenkatapult':
if date.today().day == 1 and datetime.datetime.now().hour == 6:
await witz_stand_out(discord.utils.get(guild.channels, name = ch_witz))
await coin_stand_out(discord.utils.get(guild.channels, name = ch_coin))
# --------------------------------------------------------------------------------------------------------
client.run('ODE1Mzc0MDc0NDU5OTc5ODM2.YDreSA.q494wu3zvinCJ6QiffrWvoUVibc')
# --------------------------------------------------------------------------------------------------------

27
dasGlas/old/coin.ini Normal file
View File

@ -0,0 +1,27 @@
[Julian]
count = 63
[Simon]
count = 3
[Freddy]
count = 109
[Dirk]
count = 80
[Jens]
count = 3
[Maurice]
count = 9
[Stefan]
count = 31
[Diana]
count = 3
[Hendrik]
count = 5

BIN
dasGlas/old/coin.mp3 Normal file

Binary file not shown.

75
dasGlas/old/main 1.0.py Normal file
View File

@ -0,0 +1,75 @@
import configparser
import atexit
import discord
from pathlib import Path
#/home/pi/discord/jar-bot/
ini = Path('/home/pi/discord/jar-bot/count.ini')
if not ini.is_file():
f = open("count.ini", "x")
#----------------------------------------------------------------------------------------------------------------------------------------------
#coin_plus(message.author.display_name,message.content.count('\U0001FA99'))
def coin_plus(name,plus):
Config.read(ini)
if Config.has_section(name):
count = Config.getint(name,'count')
count = count + plus
Config.set(name,'count',str(count))
with open(ini, 'w') as configfile:
Config.write(configfile)
else:
Config.add_section(name)
count = plus
Config.set(name,'count',str(count))
with open(ini, 'w') as configfile:
Config.write(configfile)
#----------------------------------------------------------------------------------------------------------------------------------------------
#await stand_out(message.channel)
async def stand_out(chanel):
Config.read(ini)
stand = list()
await chanel.send('Der Stand ist:')
for x in Config.sections():
count = Config.getint(x,'count')
stand.append([count, x])
stand.sort(reverse=True)
for item in stand:
if item[0] == "1":
await chanel.send(item[1] + ' hat eine Münze in das Glas geworfen')
else:
await chanel.send(item[1] + ' hat '+ str(item[0]) +' Münzen in das Glas geworfen')
with open(ini, 'w') as configfile:
Config.write(configfile)
#----------------------------------------------------------------------------------------------------------------------------------------------
#\U0001FA99 - coin
#\U0001F4B8 - money with wings
#\U0001F4B0 - moneybag
client = discord.Client()
Config = configparser.ConfigParser()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.channel.name == 'das-glas':
if message.content.count('\U0001FA99')>0:
if len(message.mentions)>0:
await message.add_reaction('\U0001F4B8')
for j in message.mentions:
coin_plus(j.display_name,message.content.count('\U0001FA99'))
else:
await message.add_reaction('\U0001F4B0')
coin_plus(message.author.display_name,message.content.count('\U0001FA99'))
elif message.content.startswith('!stand'):
await message.delete()
for x in message.author.roles:
if str(x) == "Meh":
await stand_out(message.channel)
else:
await message.delete()
#----------------------------------------------------------------------------------------------------------------------------------------------
client.run('ODE1Mzc0MDc0NDU5OTc5ODM2.YDreSA.q494wu3zvinCJ6QiffrWvoUVibc')
#----------------------------------------------------------------------------------------------------------------------------------------------
atexit.register(client.close)

12
dasGlas/old/witz.ini Normal file
View File

@ -0,0 +1,12 @@
[Julian]
count = 12
[Dirk]
count = 13
[Freddy]
count = 2
[Stefan]
count = 7

191
dasGlas/ptr.py Normal file
View File

@ -0,0 +1,191 @@
#!/usr/bin/env python3
import json
import discord
import datetime
from discord.ext import tasks
from pathlib import Path
from datetime import date
# Konstanten definieren------------------------------------------------------------------------------------
client = discord.Client()
glas_json = Path('/home/pi/discord/dasGlas/glasptr.json')
ch_coin = 'das-glas-ptr'
ch_witz = 'witzigkeit-kennt-keine-grenzen-ptr'
emo_coin = '\U0001FA99'
emo_sob = '\U0001f62d'
react_emo_money_with_wings = '\U0001F4B8'
react_emo_moneybag = '\U0001F4B0'
react_emo_smiling_face_with_tear = '\U0001f972'
snd_coin = '/home/pi/discord/dasGlas/coin.mp3'
snd_witz = '/home/pi/discord/dasGlas/kein_Pardon.mp3'
# JSON überprüfen/erstellen--------------------------------------------------------------------------------
if not glas_json.is_file():
glas_json.touch()
with open(glas_json, 'w') as f:
f.write('{}')
f.close()
# Sprachchannel verlassen----------------------------------------------------------------------------------
async def dc(vc):
while True:
if not vc.is_playing():
await vc.disconnect()
return
# Sound abspielen------------------------------------------------------------------------------------------
async def play_sound(name, channel):
if(channel == ch_coin):
sound = snd_coin
elif(channel == ch_witz):
sound = snd_witz
if not name.voice == None:
voicechannel = name.voice.channel
if voicechannel != None:
vc = await voicechannel.connect()
vc.play(discord.FFmpegPCMAudio(sound))
await dc(vc)
# Stand erhöhen--------------------------------------------------------------------------------------------
def stand_plus(name, plus, channelname):
if channelname == ch_coin:
chanel = "coin"
elif channelname == ch_witz:
chanel = "witz"
with open(glas_json, "r+") as stand_json:
data = json.load(stand_json)
if not name in data:
data[name] = {"name": name, chanel: 0}
elif chanel not in data[name]:
data[name][chanel] = 0
data[name][chanel] = data[name][chanel] + plus
stand_json.seek(0)
stand_json.truncate()
json.dump(data, stand_json, indent=4, sort_keys=True)
# Aktuellen Stand ausgeben--------------------------------------------------------------------------------
async def stand_out(channel):
if channel.name == ch_coin:
chanel = "coin"
stdmsg = ['eine Münze in das Glas geworfen',
' Münzen in das Glas geworfen']
elif channel.name == ch_witz:
chanel = "witz"
stdmsg = ['einen schlechten Witz gemacht',
' schlechte Witze gemacht']
stand = list()
with open(glas_json, "r") as stand_json:
data = json.load(stand_json)
for x in data:
if chanel in data[x]:
stand.append([data[x][chanel], data[x]["name"]])
stand_json.close()
await channel.send('Der Stand ist:')
stand.sort(reverse=True)
for item in stand:
if item[0] == 1:
await channel.send(item[1] + ' hat ' +stdmsg[0])
else:
await channel.send(item[1] + ' hat ' + str(item[0]) + stdmsg[1])
# Reaktion auf Nachrichten--------------------------------------------------------------------------------
# \U0001FA99 - coin
# \U0001f62d - sob
# \U0001F4B8 - money with wings
# \U0001F4B0 - moneybag
# \U0001f972 - smiling face with tear
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
output.start()
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.channel.name == ch_coin:
emo = emo_coin
react_emo = react_emo_moneybag
multi_react_emo = react_emo_money_with_wings
elif message.channel.name == ch_witz:
emo = emo_sob
react_emo = react_emo_smiling_face_with_tear
multi_react_emo = react_emo_smiling_face_with_tear
if message.content.count(emo) > 0:
if len(message.mentions) > 0:
await message.add_reaction(multi_react_emo)
for j in message.mentions:
stand_plus(j.display_name, message.content.count(
emo), message.channel.name)
else:
await message.add_reaction(react_emo)
stand_plus(message.author.display_name,
message.content.count(emo), message.channel.name)
await play_sound(message.author, message.channel.name)
elif message.content.startswith('!stand'):
await message.delete()
for x in message.author.roles:
if str(x) == "Meh":
await stand_out(message.channel)
else:
await message.delete()
# Automatische Stand ausgabe------------------------------------------------------------------------------
@tasks.loop(hours=1)
async def output():
for guild in client.guilds:
if guild.name == 'Bärenkatapult':
if date.today().day == 1 and datetime.datetime.now().hour == 6:
await stand_out(discord.utils.get(guild.channels, name=ch_witz))
await stand_out(discord.utils.get(guild.channels, name=ch_coin))
# Channel verschiebung------------------------------------------------------------------------------------
@client.event
async def on_voice_state_update(member, before, after):
if after.channel is not None:
channel = after.channel
if channel.category.name == "Spiele":
if discord.utils.get(after.channel.guild.categories, name="belebt") == None:
await member.guild.create_category("belebt")
B = discord.utils.get(
after.channel.guild.categories, name="belebt")
await B.edit(position=3)
await channel.edit(category=B)
if before.channel is not None:
if before.channel.category.name == "belebt" and len(before.channel.members) == 0:
S = discord.utils.get(
before.channel.guild.categories, name="Spiele")
channel = before.channel
cat = channel.category
await channel.edit(category=S)
if len(cat.channels) == 0:
await cat.delete()
sorchan = ["0"]
for i in S.channels:
sorchan.append(i.name)
sorchan.remove("0")
sorchan.sort()
for i in range(len(sorchan)):
await discord.utils.get(before.channel.guild.channels, name=sorchan[i]).edit(position=i)
# --------------------------------------------------------------------------------------------------------
#ODE1Mzc0MDc0NDU5OTc5ODM2.YDreSA.q494wu3zvinCJ6QiffrWvoUVibc
client.run('ODI4Nzc4MTg0Nzg1OTIwMDIw.YGuh1Q.-MWOKUsNNBOzWFDYHjUtA-7umN0')
# --------------------------------------------------------------------------------------------------------

2
dasGlas/requirements.txt Normal file
View File

@ -0,0 +1,2 @@
discord~=1.7.3
PyNaCl~=1.5.0

BIN
dasGlas/test.mp3 Normal file

Binary file not shown.

8
tts/.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

28
tts/.idea/deployment.xml Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
<serverData>
<paths name="pi@pi:22">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="pi@pi:22 agent">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="pi@pi:22 agent (1)">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
</serverData>
</component>
</project>

View File

@ -0,0 +1,26 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="DuplicatedCode" enabled="false" level="WEAK WARNING" enabled_by_default="false">
<Languages>
<language minSize="58" name="Python" />
</Languages>
</inspection_tool>
<inspection_tool class="JsonSchemaCompliance" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="E501" />
</list>
</option>
</inspection_tool>
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="N806" />
<option value="N802" />
</list>
</option>
</inspection_tool>
</profile>
</component>

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

4
tts/.idea/misc.xml Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>

8
tts/.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/tts.iml" filepath="$PROJECT_DIR$/.idea/tts.iml" />
</modules>
</component>
</project>

11
tts/.idea/tts.iml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PackageRequirementsSettings">
<option name="removeUnused" value="true" />
</component>
</module>

11
tts/CL4PTP.service Normal file
View File

@ -0,0 +1,11 @@
[Unit]
Description=Das Glas Starten
After=multi-user.target
[Service]
#Type=simple
ExecStart=/home/ne_ju/pythonProjects/venv/bin/python /home/ne_ju/pythonProjects/discord/tts/main.py
User=ne_ju
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

17
tts/Dockerfile Normal file
View File

@ -0,0 +1,17 @@
FROM debian:bullseye
WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install -y ffmpeg
RUN apt-get install -y python3-full
RUN apt-get install -y python3-pip
RUN apt-get install -y python-is-python3
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
ADD requirements.txt ./
RUN python3 -m pip install --no-cache-dir -r requirements.txt
ADD main.py ./
CMD [ "python", "./main.py" ]

3
tts/logs/2022-10-12.txt Normal file
View File

@ -0,0 +1,3 @@
12/10/2022 19:07:43 Stefan joined Schnacken/Schweigen
12/10/2022 20:52:43 Stefan left Schnacken/Schweigen
12/10/2022 20:52:53 Stefan joined Schnacken/Schweigen

4
tts/logs/2022-10-13.txt Normal file
View File

@ -0,0 +1,4 @@
13/10/2022 00:02:48 Stefan left Schnacken/Schweigen
13/10/2022 00:24:21 Julian left Schnacken/Schweigen
13/10/2022 11:17:26 Julian joined Schnacken/Schweigen
13/10/2022 18:19:03 Stefan joined Schnacken/Schweigen

3
tts/logs/2022-10-14.txt Normal file
View File

@ -0,0 +1,3 @@
14/10/2022 00:53:17 Stefan left Schnacken/Schweigen
14/10/2022 00:53:52 Julian left Schnacken/Schweigen
14/10/2022 13:54:06 Julian joined Schnacken/Schweigen

16
tts/logs/2022-10-15.txt Normal file
View File

@ -0,0 +1,16 @@
15/10/2022 02:19:04 Julian left Schnacken/Schweigen
15/10/2022 11:02:25 Julian joined Schnacken/Schweigen
15/10/2022 17:57:22 Stefan joined Schnacken/Schweigen
15/10/2022 20:23:02 Freddy joined Schnacken/Schweigen
15/10/2022 21:45:53 Stefan left Schnacken/Schweigen
15/10/2022 22:26:13 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
15/10/2022 22:26:14 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
15/10/2022 22:45:23 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
15/10/2022 22:45:25 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
15/10/2022 23:17:57 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
15/10/2022 23:17:58 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
15/10/2022 23:46:06 Stefan joined Schnacken/Schweigen
15/10/2022 23:46:13 Stefan left Schnacken/Schweigen
15/10/2022 23:46:19 Stefan joined Schnacken/Schweigen
15/10/2022 23:47:16 Freddy left Schnacken/Schweigen
15/10/2022 23:47:58 Freddy joined Schnacken/Schweigen

7
tts/logs/2022-10-16.txt Normal file
View File

@ -0,0 +1,7 @@
16/10/2022 03:59:36 Stefan left Schnacken/Schweigen
16/10/2022 05:50:59 Julian left Schnacken/Schweigen
16/10/2022 06:54:05 Freddy left Schnacken/Schweigen
16/10/2022 11:27:46 Julian joined Schnacken/Schweigen
16/10/2022 21:28:32 Stefan joined Schnacken/Schweigen
16/10/2022 22:40:45 Stefan left Schnacken/Schweigen
16/10/2022 22:41:30 Stefan joined Schnacken/Schweigen

8
tts/logs/2022-10-17.txt Normal file
View File

@ -0,0 +1,8 @@
17/10/2022 01:45:51 Stefan left Schnacken/Schweigen
17/10/2022 01:46:25 Julian left Schnacken/Schweigen
17/10/2022 15:15:30 Julian joined Schnacken/Schweigen
17/10/2022 18:34:25 Freddy joined Schnacken/Schweigen
17/10/2022 19:10:41 Stefan joined Schnacken/Schweigen
17/10/2022 19:33:57 Stefan left Schnacken/Schweigen
17/10/2022 19:34:06 Stefan joined Schnacken/Schweigen
17/10/2022 23:57:55 Freddy left Schnacken/Schweigen

5
tts/logs/2022-10-18.txt Normal file
View File

@ -0,0 +1,5 @@
18/10/2022 02:19:28 Stefan left Schnacken/Schweigen
18/10/2022 02:23:18 Julian left Schnacken/Schweigen
18/10/2022 14:47:01 Julian joined Schnacken/Schweigen
18/10/2022 16:42:03 Freddy joined Schnacken/Schweigen
18/10/2022 17:30:13 Stefan joined Schnacken/Schweigen

8
tts/logs/2022-10-19.txt Normal file
View File

@ -0,0 +1,8 @@
19/10/2022 00:17:20 Stefan left Schnacken/Schweigen
19/10/2022 01:31:15 Freddy left Schnacken/Schweigen
19/10/2022 01:31:18 Julian left Schnacken/Schweigen
19/10/2022 17:19:39 Julian joined Schnacken/Schweigen
19/10/2022 18:54:33 Stefan joined Schnacken/Schweigen
19/10/2022 19:11:24 Stefan left Schnacken/Schweigen
19/10/2022 19:12:04 Stefan joined Schnacken/Schweigen
19/10/2022 23:13:26 Freddy joined Schnacken/Schweigen

7
tts/logs/2022-10-20.txt Normal file
View File

@ -0,0 +1,7 @@
20/10/2022 01:17:30 Stefan left Schnacken/Schweigen
20/10/2022 01:25:15 Julian left Schnacken/Schweigen
20/10/2022 01:52:28 Freddy left Schnacken/Schweigen
20/10/2022 13:54:06 Julian joined Schnacken/Schweigen
20/10/2022 17:55:52 Julian joined Schnacken/Schweigen
20/10/2022 20:06:02 Stefan joined Schnacken/Schweigen
20/10/2022 23:50:17 Freddy joined Schnacken/Schweigen

10
tts/logs/2022-10-21.txt Normal file
View File

@ -0,0 +1,10 @@
21/10/2022 01:11:05 Stefan left Schnacken/Schweigen
21/10/2022 02:01:23 Freddy left Schnacken/Schweigen
21/10/2022 02:01:26 Julian left Schnacken/Schweigen
21/10/2022 13:12:27 Julian joined Schnacken/Schweigen
21/10/2022 15:20:12 Freddy joined Schnacken/Schweigen
21/10/2022 17:39:44 Freddy left Schnacken/Schweigen
21/10/2022 18:28:42 Julian moved from Schnacken/Schweigen to hat bock zu zocken
21/10/2022 18:28:44 Julian moved from hat bock zu zocken to Schnacken/Schweigen
21/10/2022 20:24:51 Stefan joined Schnacken/Schweigen
21/10/2022 23:04:15 Freddy joined Schnacken/Schweigen

12
tts/logs/2022-10-22.txt Normal file
View File

@ -0,0 +1,12 @@
22/10/2022 02:49:58 Stefan left Schnacken/Schweigen
22/10/2022 03:36:26 Julian left Schnacken/Schweigen
22/10/2022 05:54:08 Freddy left Schnacken/Schweigen
22/10/2022 10:53:43 Julian joined Schnacken/Schweigen
22/10/2022 14:00:22 Julian left Schnacken/Schweigen
22/10/2022 14:12:26 Julian joined Schnacken/Schweigen
22/10/2022 19:47:27 Stefan joined Schnacken/Schweigen
22/10/2022 19:48:36 Stefan left Schnacken/Schweigen
22/10/2022 19:48:46 Stefan joined Schnacken/Schweigen
22/10/2022 19:48:54 Stefan left Schnacken/Schweigen
22/10/2022 19:49:02 Stefan joined Schnacken/Schweigen
22/10/2022 22:20:10 Freddy joined Schnacken/Schweigen

5
tts/logs/2022-10-23.txt Normal file
View File

@ -0,0 +1,5 @@
23/10/2022 03:24:40 Stefan left Schnacken/Schweigen
23/10/2022 04:08:00 Julian left Schnacken/Schweigen
23/10/2022 04:29:51 Freddy left Schnacken/Schweigen
23/10/2022 11:59:49 Julian joined Schnacken/Schweigen
23/10/2022 14:11:31 Stefan joined Schnacken/Schweigen

10
tts/logs/2022-10-24.txt Normal file
View File

@ -0,0 +1,10 @@
24/10/2022 00:42:10 Stefan left Schnacken/Schweigen
24/10/2022 00:53:50 Julian left Schnacken/Schweigen
24/10/2022 10:20:51 Julian joined Schnacken/Schweigen
24/10/2022 10:24:22 Freddy joined Schnacken/Schweigen
24/10/2022 11:14:59 Julian left Schnacken/Schweigen
24/10/2022 11:26:43 Freddy left Schnacken/Schweigen
24/10/2022 14:05:06 Julian joined Schnacken/Schweigen
24/10/2022 14:20:00 Freddy joined Schnacken/Schweigen
24/10/2022 17:26:55 Stefan joined Schnacken/Schweigen
24/10/2022 20:53:12 Freddy left Schnacken/Schweigen

10
tts/logs/2022-10-25.txt Normal file
View File

@ -0,0 +1,10 @@
25/10/2022 01:15:12 Stefan left Schnacken/Schweigen
25/10/2022 03:26:35 Julian left Schnacken/Schweigen
25/10/2022 10:19:33 Julian joined Schnacken/Schweigen
25/10/2022 11:06:31 Freddy joined Schnacken/Schweigen
25/10/2022 11:16:28 Julian left Schnacken/Schweigen
25/10/2022 12:46:42 Freddy left Schnacken/Schweigen
25/10/2022 18:12:36 Julian joined Schnacken/Schweigen
25/10/2022 18:30:10 Stefan joined Schnacken/Schweigen
25/10/2022 23:09:21 Stefan left Schnacken/Schweigen
25/10/2022 23:10:30 Julian left Schnacken/Schweigen

4
tts/logs/2022-10-26.txt Normal file
View File

@ -0,0 +1,4 @@
26/10/2022 18:46:46 Julian joined Schnacken/Schweigen
26/10/2022 21:03:38 René joined Schnacken/Schweigen
26/10/2022 21:55:53 René left Schnacken/Schweigen
26/10/2022 23:53:16 Julian left Schnacken/Schweigen

7
tts/logs/2022-10-27.txt Normal file
View File

@ -0,0 +1,7 @@
27/10/2022 12:07:33 Julian joined Schnacken/Schweigen
27/10/2022 12:28:14 Freddy joined Schnacken/Schweigen
27/10/2022 12:30:04 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
27/10/2022 12:30:07 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
27/10/2022 21:13:18 Freddy left Schnacken/Schweigen
27/10/2022 21:13:20 Julian left Schnacken/Schweigen
27/10/2022 22:54:56 Stefan joined Schnacken/Schweigen

5
tts/logs/2022-10-28.txt Normal file
View File

@ -0,0 +1,5 @@
28/10/2022 00:12:05 Stefan left Schnacken/Schweigen
28/10/2022 13:35:08 Julian joined Schnacken/Schweigen
28/10/2022 16:04:11 Stefan joined Schnacken/Schweigen
28/10/2022 20:52:31 Freddy joined Schnacken/Schweigen
28/10/2022 23:36:18 Freddy left Schnacken/Schweigen

8
tts/logs/2022-10-29.txt Normal file
View File

@ -0,0 +1,8 @@
29/10/2022 02:15:20 Stefan left Schnacken/Schweigen
29/10/2022 02:23:33 Julian left Schnacken/Schweigen
29/10/2022 07:55:25 Julian joined Schnacken/Schweigen
29/10/2022 09:02:14 Freddy joined Schnacken/Schweigen
29/10/2022 13:16:31 Freddy left Schnacken/Schweigen
29/10/2022 16:42:23 Stefan joined Schnacken/Schweigen
29/10/2022 17:51:03 Stefan left Schnacken/Schweigen
29/10/2022 18:03:51 Stefan joined Schnacken/Schweigen

11
tts/logs/2022-10-30.txt Normal file
View File

@ -0,0 +1,11 @@
30/10/2022 01:14:00 Freddy joined Schnacken/Schweigen
30/10/2022 01:34:22 Freddy left Schnacken/Schweigen
30/10/2022 02:13:17 Julian left Schnacken/Schweigen
30/10/2022 02:13:17 Stefan left Schnacken/Schweigen
30/10/2022 08:06:36 Julian joined Schnacken/Schweigen
30/10/2022 14:03:49 Freddy joined Schnacken/Schweigen
30/10/2022 15:41:18 Stefan joined Schnacken/Schweigen
30/10/2022 15:41:27 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
30/10/2022 15:41:28 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
30/10/2022 20:52:35 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
30/10/2022 20:52:37 Freddy moved from hat bock zu zocken to Schnacken/Schweigen

9
tts/logs/2022-10-31.txt Normal file
View File

@ -0,0 +1,9 @@
31/10/2022 00:44:55 Stefan left Schnacken/Schweigen
31/10/2022 00:55:29 Julian left Schnacken/Schweigen
31/10/2022 00:55:35 Freddy left Schnacken/Schweigen
31/10/2022 13:09:32 Julian joined Schnacken/Schweigen
31/10/2022 14:46:41 Stefan joined Schnacken/Schweigen
31/10/2022 17:27:09 Freddy joined Schnacken/Schweigen
31/10/2022 19:24:01 Dirk joined Schnacken/Schweigen
31/10/2022 19:44:39 Freddy left Schnacken/Schweigen
31/10/2022 21:45:16 Dirk left Schnacken/Schweigen

10
tts/logs/2022-11-01.txt Normal file
View File

@ -0,0 +1,10 @@
01/11/2022 01:02:20 Stefan left Schnacken/Schweigen
01/11/2022 01:02:25 Julian left Schnacken/Schweigen
01/11/2022 17:22:43 Julian joined Schnacken/Schweigen
01/11/2022 17:37:10 Stefan joined Schnacken/Schweigen
01/11/2022 19:42:51 Freddy joined Schnacken/Schweigen
01/11/2022 21:18:14 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
01/11/2022 21:18:16 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
01/11/2022 22:54:29 Julian left Schnacken/Schweigen
01/11/2022 23:06:10 Stefan left Schnacken/Schweigen
01/11/2022 23:06:13 Freddy left Schnacken/Schweigen

8
tts/logs/2022-11-02.txt Normal file
View File

@ -0,0 +1,8 @@
02/11/2022 17:53:39 Julian joined Schnacken/Schweigen
02/11/2022 18:44:24 Freddy joined Schnacken/Schweigen
02/11/2022 18:52:34 Stefan joined Schnacken/Schweigen
02/11/2022 19:13:08 Stefan left Schnacken/Schweigen
02/11/2022 19:13:13 Stefan joined Schnacken/Schweigen
02/11/2022 23:12:03 Stefan left Schnacken/Schweigen
02/11/2022 23:12:08 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
02/11/2022 23:12:10 Freddy moved from hat bock zu zocken to Schnacken/Schweigen

8
tts/logs/2022-11-03.txt Normal file
View File

@ -0,0 +1,8 @@
03/11/2022 00:26:41 Julian left Schnacken/Schweigen
03/11/2022 00:55:22 Freddy left Schnacken/Schweigen
03/11/2022 14:18:40 Julian joined Schnacken/Schweigen
03/11/2022 15:39:33 Julian left Schnacken/Schweigen
03/11/2022 16:52:12 Julian joined Schnacken/Schweigen
03/11/2022 18:14:57 Freddy joined Schnacken/Schweigen
03/11/2022 18:44:09 Stefan joined Schnacken/Schweigen
03/11/2022 21:07:40 Freddy left Schnacken/Schweigen

7
tts/logs/2022-11-04.txt Normal file
View File

@ -0,0 +1,7 @@
04/11/2022 01:01:55 Julian left Schnacken/Schweigen
04/11/2022 01:25:12 Stefan left Schnacken/Schweigen
04/11/2022 16:35:40 Stefan joined Schnacken/Schweigen
04/11/2022 17:42:30 Freddy joined Schnacken/Schweigen
04/11/2022 18:18:13 Julian joined Schnacken/Schweigen
04/11/2022 20:23:18 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
04/11/2022 20:23:20 Freddy moved from hat bock zu zocken to Schnacken/Schweigen

7
tts/logs/2022-11-05.txt Normal file
View File

@ -0,0 +1,7 @@
05/11/2022 01:39:50 Julian left Schnacken/Schweigen
05/11/2022 01:56:12 Stefan left Schnacken/Schweigen
05/11/2022 02:38:12 Freddy left Schnacken/Schweigen
05/11/2022 08:57:31 Julian joined Schnacken/Schweigen
05/11/2022 14:19:14 Freddy joined Schnacken/Schweigen
05/11/2022 15:37:48 Freddy left Schnacken/Schweigen
05/11/2022 18:23:14 Stefan joined Schnacken/Schweigen

11
tts/logs/2022-11-06.txt Normal file
View File

@ -0,0 +1,11 @@
06/11/2022 00:14:24 Julian left Schnacken/Schweigen
06/11/2022 00:26:29 Stefan left Schnacken/Schweigen
06/11/2022 10:43:00 Julian joined Schnacken/Schweigen
06/11/2022 12:23:03 Julian left Schnacken/Schweigen
06/11/2022 13:06:17 Julian joined Schnacken/Schweigen
06/11/2022 14:13:39 Julian left Schnacken/Schweigen
06/11/2022 14:19:17 Julian joined Schnacken/Schweigen
06/11/2022 15:52:36 Julian left Schnacken/Schweigen
06/11/2022 18:26:52 Stefan joined Schnacken/Schweigen
06/11/2022 19:05:36 Julian joined Schnacken/Schweigen
06/11/2022 20:23:30 Freddy joined Schnacken/Schweigen

19
tts/logs/2022-11-07.txt Normal file
View File

@ -0,0 +1,19 @@
07/11/2022 00:15:58 Julian left Schnacken/Schweigen
07/11/2022 00:22:59 Freddy left Schnacken/Schweigen
07/11/2022 00:23:00 Stefan left Schnacken/Schweigen
07/11/2022 14:11:27 Julian joined Schnacken/Schweigen
07/11/2022 17:16:56 Freddy joined Schnacken/Schweigen
07/11/2022 18:51:11 Julian left Schnacken/Schweigen
07/11/2022 18:51:43 Julian joined Schnacken/Schweigen
07/11/2022 18:52:56 Stefan joined Schnacken/Schweigen
07/11/2022 19:24:34 Julian left Schnacken/Schweigen
07/11/2022 19:24:51 Julian joined Schnacken/Schweigen
07/11/2022 19:25:28 René joined Schnacken/Schweigen
07/11/2022 19:26:04 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
07/11/2022 19:26:06 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
07/11/2022 19:34:54 Julian left Schnacken/Schweigen
07/11/2022 19:35:22 René left Schnacken/Schweigen
07/11/2022 19:35:25 René joined Schnacken/Schweigen
07/11/2022 19:39:39 Julian joined Schnacken/Schweigen
07/11/2022 19:53:45 Freddy left Schnacken/Schweigen
07/11/2022 20:40:36 René left Schnacken/Schweigen

6
tts/logs/2022-11-08.txt Normal file
View File

@ -0,0 +1,6 @@
08/11/2022 00:04:19 Stefan left Schnacken/Schweigen
08/11/2022 00:04:59 Julian left Schnacken/Schweigen
08/11/2022 18:01:11 Stefan joined Schnacken/Schweigen
08/11/2022 18:19:45 Julian joined Schnacken/Schweigen
08/11/2022 23:23:41 Stefan left Schnacken/Schweigen
08/11/2022 23:24:01 Julian left Schnacken/Schweigen

2
tts/logs/2022-11-09.txt Normal file
View File

@ -0,0 +1,2 @@
09/11/2022 17:59:15 Stefan joined Schnacken/Schweigen
09/11/2022 18:11:45 Julian joined Schnacken/Schweigen

9
tts/logs/2022-11-10.txt Normal file
View File

@ -0,0 +1,9 @@
10/11/2022 00:46:51 Stefan left Schnacken/Schweigen
10/11/2022 00:46:53 Julian left Schnacken/Schweigen
10/11/2022 12:55:48 Julian joined Schnacken/Schweigen
10/11/2022 12:58:52 Julian left Schnacken/Schweigen
10/11/2022 13:20:56 Julian joined Schnacken/Schweigen
10/11/2022 15:54:58 Freddy joined Schnacken/Schweigen
10/11/2022 17:50:08 Stefan joined Schnacken/Schweigen
10/11/2022 18:09:37 Stefan left Schnacken/Schweigen
10/11/2022 18:09:42 Stefan joined Schnacken/Schweigen

9
tts/logs/2022-11-11.txt Normal file
View File

@ -0,0 +1,9 @@
11/11/2022 00:38:06 Freddy left Schnacken/Schweigen
11/11/2022 01:22:36 Stefan left Schnacken/Schweigen
11/11/2022 01:22:38 Julian left Schnacken/Schweigen
11/11/2022 12:31:04 Julian joined Schnacken/Schweigen
11/11/2022 12:31:15 Julian left Schnacken/Schweigen
11/11/2022 12:32:13 Julian joined Schnacken/Schweigen
11/11/2022 14:09:55 Julian left Schnacken/Schweigen
11/11/2022 15:51:39 Julian joined Schnacken/Schweigen
11/11/2022 19:12:37 Stefan joined Schnacken/Schweigen

5
tts/logs/2022-11-12.txt Normal file
View File

@ -0,0 +1,5 @@
12/11/2022 02:01:30 Stefan left Schnacken/Schweigen
12/11/2022 02:21:10 Julian left Schnacken/Schweigen
12/11/2022 10:26:29 Julian joined Schnacken/Schweigen
12/11/2022 14:51:49 Freddy joined Schnacken/Schweigen
12/11/2022 17:41:18 Stefan joined Schnacken/Schweigen

9
tts/logs/2022-11-13.txt Normal file
View File

@ -0,0 +1,9 @@
13/11/2022 03:42:47 Stefan left Schnacken/Schweigen
13/11/2022 03:42:51 Julian left Schnacken/Schweigen
13/11/2022 03:50:13 Freddy left Schnacken/Schweigen
13/11/2022 11:36:57 Julian joined Schnacken/Schweigen
13/11/2022 12:36:32 Maurice joined Schnacken/Schweigen
13/11/2022 14:53:15 Maurice left Schnacken/Schweigen
13/11/2022 17:35:27 Stefan joined Schnacken/Schweigen
13/11/2022 18:23:35 Freddy joined Schnacken/Schweigen
13/11/2022 19:32:01 Freddy left Schnacken/Schweigen

11
tts/logs/2022-11-14.txt Normal file
View File

@ -0,0 +1,11 @@
14/11/2022 00:52:55 Stefan left Schnacken/Schweigen
14/11/2022 00:52:58 Julian left Schnacken/Schweigen
14/11/2022 15:31:20 Julian joined Schnacken/Schweigen
14/11/2022 15:44:51 Freddy joined Schnacken/Schweigen
14/11/2022 16:43:17 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
14/11/2022 16:43:18 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
14/11/2022 16:45:01 Stefan joined Schnacken/Schweigen
14/11/2022 17:00:31 Emmi joined Schnacken/Schweigen
14/11/2022 17:00:49 Emmi left Schnacken/Schweigen
14/11/2022 19:53:06 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
14/11/2022 19:53:08 Freddy moved from hat bock zu zocken to Schnacken/Schweigen

6
tts/logs/2022-11-15.txt Normal file
View File

@ -0,0 +1,6 @@
15/11/2022 00:24:12 Freddy left Schnacken/Schweigen
15/11/2022 02:04:15 Stefan left Schnacken/Schweigen
15/11/2022 02:08:49 Julian left Schnacken/Schweigen
15/11/2022 16:39:57 Stefan joined Schnacken/Schweigen
15/11/2022 17:32:28 Julian joined Schnacken/Schweigen
15/11/2022 23:35:48 Freddy joined Schnacken/Schweigen

11
tts/logs/2022-11-16.txt Normal file
View File

@ -0,0 +1,11 @@
16/11/2022 01:30:39 Stefan left Schnacken/Schweigen
16/11/2022 01:35:02 Julian left Schnacken/Schweigen
16/11/2022 02:37:05 Freddy left Schnacken/Schweigen
16/11/2022 16:19:53 Stefan joined Schnacken/Schweigen
16/11/2022 18:08:06 Julian joined Schnacken/Schweigen
16/11/2022 18:17:34 Freddy joined Schnacken/Schweigen
16/11/2022 18:32:33 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
16/11/2022 18:32:34 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
16/11/2022 19:02:53 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
16/11/2022 19:02:54 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
16/11/2022 20:47:06 Freddy left Schnacken/Schweigen

17
tts/logs/2022-11-17.txt Normal file
View File

@ -0,0 +1,17 @@
17/11/2022 00:43:10 Stefan left Schnacken/Schweigen
17/11/2022 01:05:54 Julian left Schnacken/Schweigen
17/11/2022 12:10:38 Julian joined Schnacken/Schweigen
17/11/2022 17:03:37 Freddy joined Schnacken/Schweigen
17/11/2022 18:01:17 Stefan joined Schnacken/Schweigen
17/11/2022 18:13:38 Stefan left Schnacken/Schweigen
17/11/2022 18:24:30 Freddy left Schnacken/Schweigen
17/11/2022 18:24:33 Freddy joined Schnacken/Schweigen
17/11/2022 18:55:20 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
17/11/2022 18:55:22 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
17/11/2022 20:24:27 Freddy left Schnacken/Schweigen
17/11/2022 20:24:39 Freddy joined Schnacken/Schweigen
17/11/2022 20:31:00 Freddy left Schnacken/Schweigen
17/11/2022 20:31:20 Freddy joined Schnacken/Schweigen
17/11/2022 20:35:14 Freddy left Schnacken/Schweigen
17/11/2022 20:35:18 Freddy joined Schnacken/Schweigen
17/11/2022 23:04:03 Stefan joined Schnacken/Schweigen

5
tts/logs/2022-11-18.txt Normal file
View File

@ -0,0 +1,5 @@
18/11/2022 00:04:57 Freddy left Schnacken/Schweigen
18/11/2022 01:46:46 Stefan left Schnacken/Schweigen
18/11/2022 01:47:09 Julian left Schnacken/Schweigen
18/11/2022 14:39:25 Julian joined Schnacken/Schweigen
18/11/2022 17:51:24 Stefan joined Schnacken/Schweigen

7
tts/logs/2022-11-19.txt Normal file
View File

@ -0,0 +1,7 @@
19/11/2022 03:31:39 Julian left Schnacken/Schweigen
19/11/2022 03:51:38 Stefan left Schnacken/Schweigen
19/11/2022 11:49:44 Julian joined Schnacken/Schweigen
19/11/2022 14:46:33 Freddy joined Schnacken/Schweigen
19/11/2022 17:38:45 Stefan joined Schnacken/Schweigen
19/11/2022 17:55:29 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
19/11/2022 17:55:30 Freddy moved from hat bock zu zocken to Schnacken/Schweigen

14
tts/logs/2022-11-20.txt Normal file
View File

@ -0,0 +1,14 @@
20/11/2022 00:45:14 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
20/11/2022 00:45:15 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
20/11/2022 02:03:01 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
20/11/2022 02:03:02 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
20/11/2022 05:02:38 Stefan left Schnacken/Schweigen
20/11/2022 05:18:51 Julian left Schnacken/Schweigen
20/11/2022 05:48:26 Freddy left Schnacken/Schweigen
20/11/2022 12:06:00 Julian joined Schnacken/Schweigen
20/11/2022 16:37:21 Freddy joined Schnacken/Schweigen
20/11/2022 18:08:13 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
20/11/2022 18:08:13 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
20/11/2022 18:26:06 Stefan joined Schnacken/Schweigen
20/11/2022 22:17:47 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
20/11/2022 22:17:48 Freddy moved from hat bock zu zocken to Schnacken/Schweigen

5
tts/logs/2022-11-21.txt Normal file
View File

@ -0,0 +1,5 @@
21/11/2022 02:03:47 Stefan left Schnacken/Schweigen
21/11/2022 02:07:45 Julian left Schnacken/Schweigen
21/11/2022 06:18:37 Freddy left Schnacken/Schweigen
21/11/2022 18:20:27 Julian joined Schnacken/Schweigen
21/11/2022 18:47:25 Stefan joined Schnacken/Schweigen

4
tts/logs/2022-11-22.txt Normal file
View File

@ -0,0 +1,4 @@
22/11/2022 01:05:44 Stefan left Schnacken/Schweigen
22/11/2022 01:09:52 Julian left Schnacken/Schweigen
22/11/2022 18:02:01 Stefan joined Schnacken/Schweigen
22/11/2022 18:36:50 Julian joined Schnacken/Schweigen

4
tts/logs/2022-11-23.txt Normal file
View File

@ -0,0 +1,4 @@
23/11/2022 01:18:17 Julian left Schnacken/Schweigen
23/11/2022 01:29:44 Stefan left Schnacken/Schweigen
23/11/2022 17:45:46 Julian joined Schnacken/Schweigen
23/11/2022 17:46:58 Stefan joined Schnacken/Schweigen

6
tts/logs/2022-11-24.txt Normal file
View File

@ -0,0 +1,6 @@
24/11/2022 01:17:25 Stefan left Schnacken/Schweigen
24/11/2022 01:24:39 Julian left Schnacken/Schweigen
24/11/2022 12:05:22 Julian joined Schnacken/Schweigen
24/11/2022 12:52:43 Julian left Schnacken/Schweigen
24/11/2022 15:04:14 Julian joined Schnacken/Schweigen
24/11/2022 20:38:05 Stefan joined Schnacken/Schweigen

4
tts/logs/2022-11-25.txt Normal file
View File

@ -0,0 +1,4 @@
25/11/2022 01:03:18 Julian left Schnacken/Schweigen
25/11/2022 01:03:18 Stefan left Schnacken/Schweigen
25/11/2022 13:28:40 Julian joined Schnacken/Schweigen
25/11/2022 23:00:57 Julian left Schnacken/Schweigen

2
tts/logs/2022-11-26.txt Normal file
View File

@ -0,0 +1,2 @@
26/11/2022 11:17:01 Julian joined Schnacken/Schweigen
26/11/2022 23:39:29 Julian left Schnacken/Schweigen

2
tts/logs/2022-11-27.txt Normal file
View File

@ -0,0 +1,2 @@
27/11/2022 11:23:22 Julian joined Schnacken/Schweigen
27/11/2022 22:29:32 Stefan joined Schnacken/Schweigen

14
tts/logs/2022-11-28.txt Normal file
View File

@ -0,0 +1,14 @@
28/11/2022 00:13:40 Freddy joined Schnacken/Schweigen
28/11/2022 00:17:58 Freddy left Schnacken/Schweigen
28/11/2022 00:18:03 Freddy joined Schnacken/Schweigen
28/11/2022 00:23:10 Freddy left Schnacken/Schweigen
28/11/2022 00:23:18 Freddy joined Schnacken/Schweigen
28/11/2022 01:24:19 Freddy left Schnacken/Schweigen
28/11/2022 01:45:55 Stefan left Schnacken/Schweigen
28/11/2022 01:46:32 Julian left Schnacken/Schweigen
28/11/2022 14:16:51 Julian joined Schnacken/Schweigen
28/11/2022 18:07:35 Stefan joined Schnacken/Schweigen
28/11/2022 18:20:42 Stefan left Schnacken/Schweigen
28/11/2022 18:20:46 Stefan joined Schnacken/Schweigen
28/11/2022 22:46:04 Freddy joined Schnacken/Schweigen
28/11/2022 23:26:31 Freddy left Schnacken/Schweigen

9
tts/logs/2022-11-29.txt Normal file
View File

@ -0,0 +1,9 @@
29/11/2022 00:34:51 Stefan left Schnacken/Schweigen
29/11/2022 03:02:11 Julian left Schnacken/Schweigen
29/11/2022 18:06:59 Freddy joined Schnacken/Schweigen
29/11/2022 18:08:06 Freddy left Schnacken/Schweigen
29/11/2022 18:08:28 Julian joined Schnacken/Schweigen
29/11/2022 18:45:41 Stefan joined Schnacken/Schweigen
29/11/2022 20:00:35 Freddy joined Schnacken/Schweigen
29/11/2022 20:04:18 Freddy left Schnacken/Schweigen
29/11/2022 21:22:21 Freddy joined Schnacken/Schweigen

9
tts/logs/2022-11-30.txt Normal file
View File

@ -0,0 +1,9 @@
30/11/2022 00:12:50 Freddy left Schnacken/Schweigen
30/11/2022 01:15:18 Stefan left Schnacken/Schweigen
30/11/2022 01:15:19 Julian left Schnacken/Schweigen
30/11/2022 17:23:56 Stefan joined Schnacken/Schweigen
30/11/2022 18:23:12 Julian joined Schnacken/Schweigen
30/11/2022 20:52:47 Freddy joined Schnacken/Schweigen
30/11/2022 20:52:54 Freddy left Schnacken/Schweigen
30/11/2022 21:29:06 Freddy joined Schnacken/Schweigen
30/11/2022 22:40:59 Freddy left Schnacken/Schweigen

7
tts/logs/2022-12-01.txt Normal file
View File

@ -0,0 +1,7 @@
01/12/2022 00:35:04 Stefan left Schnacken/Schweigen
01/12/2022 00:44:37 Julian left Schnacken/Schweigen
01/12/2022 12:17:06 Julian joined Schnacken/Schweigen
01/12/2022 18:28:25 Lara joined Schnacken/Schweigen
01/12/2022 19:21:07 Lara left Schnacken/Schweigen
01/12/2022 22:59:54 Freddy joined Schnacken/Schweigen
01/12/2022 23:16:34 Freddy left Schnacken/Schweigen

9
tts/logs/2022-12-02.txt Normal file
View File

@ -0,0 +1,9 @@
02/12/2022 00:22:15 Julian left Schnacken/Schweigen
02/12/2022 11:44:40 Julian joined Schnacken/Schweigen
02/12/2022 14:09:27 Julian left Schnacken/Schweigen
02/12/2022 16:04:19 Julian joined Schnacken/Schweigen
02/12/2022 16:15:41 Freddy joined Schnacken/Schweigen
02/12/2022 16:40:46 Julian left Schnacken/Schweigen
02/12/2022 16:42:56 Julian joined Schnacken/Schweigen
02/12/2022 17:10:55 Julian left Schnacken/Schweigen
02/12/2022 19:52:30 Julian joined Schnacken/Schweigen

21
tts/logs/2022-12-03.txt Normal file
View File

@ -0,0 +1,21 @@
03/12/2022 01:19:58 Stefan joined Schnacken/Schweigen
03/12/2022 02:55:27 Stefan left Schnacken/Schweigen
03/12/2022 03:12:00 Freddy left Schnacken/Schweigen
03/12/2022 03:12:00 Julian left Schnacken/Schweigen
03/12/2022 12:11:50 Julian joined Schnacken/Schweigen
03/12/2022 17:31:08 auch Freddy joined hat bock zu zocken
03/12/2022 17:31:12 auch Freddy left hat bock zu zocken
03/12/2022 17:56:30 auch Freddy joined Schnacken/Schweigen
03/12/2022 18:12:43 Freddy joined Schnacken/Schweigen
03/12/2022 18:50:42 Freddy left Schnacken/Schweigen
03/12/2022 18:50:55 Freddy joined Schnacken/Schweigen
03/12/2022 18:51:01 Freddy left Schnacken/Schweigen
03/12/2022 20:35:47 Freddy joined Schnacken/Schweigen
03/12/2022 20:36:04 auch Freddy left Schnacken/Schweigen
03/12/2022 20:56:03 Emmi joined Schnacken/Schweigen
03/12/2022 20:56:05 Emmi left Schnacken/Schweigen
03/12/2022 20:56:12 Emmi joined Schnacken/Schweigen
03/12/2022 20:56:13 Emmi left Schnacken/Schweigen
03/12/2022 21:11:13 Stefan joined Schnacken/Schweigen
03/12/2022 21:49:25 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
03/12/2022 21:49:28 Freddy moved from hat bock zu zocken to Schnacken/Schweigen

8
tts/logs/2022-12-04.txt Normal file
View File

@ -0,0 +1,8 @@
04/12/2022 01:30:40 Maurice joined Schnacken/Schweigen
04/12/2022 02:27:47 Maurice left Schnacken/Schweigen
04/12/2022 04:10:18 Stefan left Schnacken/Schweigen
04/12/2022 04:52:41 Julian left Schnacken/Schweigen
04/12/2022 05:04:29 Freddy left Schnacken/Schweigen
04/12/2022 12:03:15 Julian joined Schnacken/Schweigen
04/12/2022 16:23:05 Stefan joined Schnacken/Schweigen
04/12/2022 19:04:09 Freddy joined Schnacken/Schweigen

7
tts/logs/2022-12-05.txt Normal file
View File

@ -0,0 +1,7 @@
05/12/2022 00:57:06 Stefan left Schnacken/Schweigen
05/12/2022 01:53:27 Julian left Schnacken/Schweigen
05/12/2022 02:17:31 Freddy left Schnacken/Schweigen
05/12/2022 17:34:52 Stefan joined Schnacken/Schweigen
05/12/2022 18:50:29 Julian joined Schnacken/Schweigen
05/12/2022 20:08:26 Freddy joined Schnacken/Schweigen
05/12/2022 21:56:57 Freddy left Schnacken/Schweigen

4
tts/logs/2022-12-06.txt Normal file
View File

@ -0,0 +1,4 @@
06/12/2022 00:37:25 Julian left Schnacken/Schweigen
06/12/2022 00:49:28 Stefan left Schnacken/Schweigen
06/12/2022 08:43:21 Chris joined 1
06/12/2022 08:43:26 Chris left 1

4
tts/logs/2022-12-07.txt Normal file
View File

@ -0,0 +1,4 @@
07/12/2022 17:58:00 Julian joined Schnacken/Schweigen
07/12/2022 19:00:03 Julian left Schnacken/Schweigen
07/12/2022 21:01:37 Julian joined Schnacken/Schweigen
07/12/2022 21:43:38 Stefan joined Schnacken/Schweigen

7
tts/logs/2022-12-08.txt Normal file
View File

@ -0,0 +1,7 @@
08/12/2022 00:34:38 Stefan left Schnacken/Schweigen
08/12/2022 00:42:16 Julian left Schnacken/Schweigen
08/12/2022 14:08:55 Julian joined Schnacken/Schweigen
08/12/2022 19:21:15 Stefan joined Schnacken/Schweigen
08/12/2022 21:42:32 René joined Schnacken/Schweigen
08/12/2022 22:30:00 René left Schnacken/Schweigen
08/12/2022 23:04:49 Freddy joined Schnacken/Schweigen

10
tts/logs/2022-12-09.txt Normal file
View File

@ -0,0 +1,10 @@
09/12/2022 01:05:35 Julian left Schnacken/Schweigen
09/12/2022 01:34:36 Stefan left Schnacken/Schweigen
09/12/2022 01:34:41 Freddy left Schnacken/Schweigen
09/12/2022 16:31:57 Julian joined Schnacken/Schweigen
09/12/2022 17:13:45 Stefan joined Schnacken/Schweigen
09/12/2022 19:03:43 Stefan left Schnacken/Schweigen
09/12/2022 19:17:33 Freddy joined Schnacken/Schweigen
09/12/2022 20:34:30 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
09/12/2022 20:34:34 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
09/12/2022 20:45:41 Freddy left Schnacken/Schweigen

10
tts/logs/2022-12-10.txt Normal file
View File

@ -0,0 +1,10 @@
10/12/2022 00:18:50 Julian left Schnacken/Schweigen
10/12/2022 10:28:13 Julian joined Schnacken/Schweigen
10/12/2022 10:37:40 Julian left Schnacken/Schweigen
10/12/2022 13:58:02 Julian joined Schnacken/Schweigen
10/12/2022 17:12:56 Freddy joined Schnacken/Schweigen
10/12/2022 17:54:17 Stefan joined Schnacken/Schweigen
10/12/2022 18:28:24 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
10/12/2022 18:28:27 Freddy moved from hat bock zu zocken to Schnacken/Schweigen
10/12/2022 18:37:42 Freddy moved from Schnacken/Schweigen to hat bock zu zocken
10/12/2022 18:37:45 Freddy moved from hat bock zu zocken to Schnacken/Schweigen

16
tts/logs/2022-12-11.txt Normal file
View File

@ -0,0 +1,16 @@
11/12/2022 01:45:23 Freddy moved from Schnacken/Schweigen to Hört Musik
11/12/2022 01:45:27 Freddy moved from Hört Musik to Schnacken/Schweigen
11/12/2022 02:49:17 Stefan left Schnacken/Schweigen
11/12/2022 06:45:48 Julian left Schnacken/Schweigen
11/12/2022 06:45:55 Julian joined Schnacken/Schweigen
11/12/2022 06:45:57 Julian left Schnacken/Schweigen
11/12/2022 06:46:08 Julian joined Schnacken/Schweigen
11/12/2022 06:49:42 Julian left Schnacken/Schweigen
11/12/2022 06:49:46 Freddy left Schnacken/Schweigen
11/12/2022 13:11:42 Julian joined Schnacken/Schweigen
11/12/2022 14:41:58 Maurice joined Schnacken/Schweigen
11/12/2022 15:09:31 Maurice left Schnacken/Schweigen
11/12/2022 16:44:35 Maurice joined Schnacken/Schweigen
11/12/2022 17:57:13 Maurice left Schnacken/Schweigen
11/12/2022 18:43:04 Stefan joined Schnacken/Schweigen
11/12/2022 22:19:29 Freddy joined Schnacken/Schweigen

5
tts/logs/2022-12-12.txt Normal file
View File

@ -0,0 +1,5 @@
12/12/2022 01:09:00 Stefan left Schnacken/Schweigen
12/12/2022 01:40:00 Julian left Schnacken/Schweigen
12/12/2022 04:52:56 Freddy left Schnacken/Schweigen
12/12/2022 16:35:22 Julian joined Schnacken/Schweigen
12/12/2022 19:19:52 Stefan joined Schnacken/Schweigen

4
tts/logs/2022-12-13.txt Normal file
View File

@ -0,0 +1,4 @@
13/12/2022 00:30:44 Julian left Schnacken/Schweigen
13/12/2022 00:35:23 Stefan left Schnacken/Schweigen
13/12/2022 15:11:42 Julian joined Schnacken/Schweigen
13/12/2022 19:12:05 Stefan joined Schnacken/Schweigen

Some files were not shown because too many files have changed in this diff Show More