Warum wird eine weitere Textdatei erstellt?
Verfasst: Donnerstag 6. April 2023, 21:14
Hallo liebe Community,
ich arbeite gerade an einem Generator um ein wenig mehr über Python zu erfahren. Allerdings erstellt mein Code beim generieren eine weitere Textdatei obwohl er eigentlich nur aus der vorhanden eine Zeile löschen soll. Das ist mein Code im moment.
LG
ich arbeite gerade an einem Generator um ein wenig mehr über Python zu erfahren. Allerdings erstellt mein Code beim generieren eine weitere Textdatei obwohl er eigentlich nur aus der vorhanden eine Zeile löschen soll. Das ist mein Code im moment.
LG
Code: Alles auswählen
import discord
from discord.ext import commands
import os
import asyncio
from server import stay_alive
intents = discord.Intents.default()
intents.message_content = True
path = os.path.join(os.getcwd(), "data")
# Pfad zur Netflix-Textdatei
netflix_file = os.path.join(path, "Netflix.txt")
prime_file = os.path.join(path, "Prime.txt")
nitro_file = os.path.join(path, "Nitro.txt")
def load_data(filename):
with open(filename) as f:
data = [line.strip() for line in f]
return data
def save_data(filename, data):
with open(filename, 'w') as f:
for item in data:
f.write(f"{item}\n")
netflix_data = load_data(netflix_file)
prime_data = load_data(prime_file)
nitro_data = load_data(nitro_file)
# Discord-Bot einrichten
bot = commands.Bot(command_prefix='!',intents=intents)
@bot.command()
async def gen(ctx):
# Liste der Kategorien und Anzahl der Einträge erstellen
categories = {
"Netflix": len(netflix_data),
"Prime": len(prime_data),
"Nitro": len(nitro_data)
}
categories_str = "\n".join([f"{k}: {v}" for k, v in categories.items()])
# Nachricht an den Absender senden
channel = bot.get_channel(1092443991053697105) # ID des Kanals
await channel.send(f"{ctx.author.mention}, welche Kategorie möchtest du? Hier sind die verfügbaren Kategorien und die Anzahl der Einträge in jeder Kategorie:\n{categories_str}")
# Funktion zum Abfangen von Antworten definieren
def check(message):
return message.author == ctx.author
# Antwort des Absenders abfangen
try:
category = await bot.wait_for('message', timeout=30.0, check=check)
except asyncio.TimeoutError:
await ctx.author.send("Zeit abgelaufen, bitte versuche es erneut.")
return
# Überprüfen, ob die ausgewählte Kategorie gültig ist
category = category.content.lower()
if category not in ["netflix", "prime", "nitro"]:
await ctx.send("Ungültige Kategorie, bitte versuche es erneut.")
return
# Daten für die ausgewählte Kategorie abrufen
if category == "netflix":
data = netflix_data
filename = "Netflix.txt"
elif category == "prime":
data = prime_data
filename = "Prime.txt"
else:
data = nitro_data
filename = "Nitro.txt"
# Überprüfen, ob es Einträge für die ausgewählte Kategorie gibt
if len(data) == 0:
await ctx.send(f"Entschuldigung, es gibt keine Einträge in der Kategorie {category}.")
return
# Eine zufällige Zeile aus den Daten auswählen
import random
item = random.choice(data)
# Nachricht mit dem ausgewählten Element an den Absender senden
await ctx.author.send(item)
# Das ausgewählte Element aus den Daten entfernen
data.remove(item)
save_data(filename, data)
stay_alive()
bot.run(os.environ['Discord_Token'])