Compare commits
2 Commits
b12298ebeb
...
0627f19bc2
Author | SHA1 | Date | |
---|---|---|---|
|
0627f19bc2 | ||
|
83f1e8f495 |
116
gesmain.py
116
gesmain.py
@ -1,4 +1,4 @@
|
|||||||
import discord, csv, os, datetime
|
import discord, csv, os, datetime, random, asyncio
|
||||||
from discord import app_commands
|
from discord import app_commands
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
|
||||||
@ -11,6 +11,8 @@ time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|||||||
#[GUESS ]
|
#[GUESS ]
|
||||||
#[ENDGUESS]
|
#[ENDGUESS]
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
async def zapis_info_hadanka(guild_id, aktivni, zadavetel_id, fraze, zkratka):
|
async def zapis_info_hadanka(guild_id, aktivni, zadavetel_id, fraze, zkratka):
|
||||||
with open(f"guild_data/guild_{guild_id}.csv", 'w', newline='') as csvfile:
|
with open(f"guild_data/guild_{guild_id}.csv", 'w', newline='') as csvfile:
|
||||||
fieldnames = ['aktivni', 'zadavatel_id', 'fraze', 'zkratka']
|
fieldnames = ['aktivni', 'zadavatel_id', 'fraze', 'zkratka']
|
||||||
@ -18,15 +20,21 @@ async def zapis_info_hadanka(guild_id, aktivni, zadavetel_id, fraze, zkratka):
|
|||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
writer.writerow({'aktivni': aktivni, 'zadavatel_id': zadavetel_id, 'fraze': fraze, 'zkratka': zkratka})
|
writer.writerow({'aktivni': aktivni, 'zadavatel_id': zadavetel_id, 'fraze': fraze, 'zkratka': zkratka})
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
async def precti(guild_id, klic):
|
async def precti(guild_id, klic):
|
||||||
with open(f'guild_data/guild_{guild_id}.csv', newline='') as csvfile:
|
with open(f'guild_data/guild_{guild_id}.csv', newline='') as csvfile:
|
||||||
reader = csv.DictReader(csvfile)
|
reader = csv.DictReader(csvfile)
|
||||||
for row in reader:
|
for row in reader:
|
||||||
return str(row[str(klic)])
|
return str(row[str(klic)])
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
async def logcmd(process, message):
|
async def logcmd(process, message):
|
||||||
print(f"[{time}] {process} {message}")
|
print(f"[{time}] {process} {message}")
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
async def logfile(guildid, process, message):
|
async def logfile(guildid, process, message):
|
||||||
if os.path.exists(f'guild_data/guild_{guildid}.log') == False:
|
if os.path.exists(f'guild_data/guild_{guildid}.log') == False:
|
||||||
file = open(f'guild_data/guild_{guildid}.log', 'w')
|
file = open(f'guild_data/guild_{guildid}.log', 'w')
|
||||||
@ -35,6 +43,65 @@ async def logfile(guildid, process, message):
|
|||||||
file = open(f'guild_data/guild_{guildid}.log', 'a')
|
file = open(f'guild_data/guild_{guildid}.log', 'a')
|
||||||
file.write(f"[{time}] {process} {message}\n")
|
file.write(f"[{time}] {process} {message}\n")
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
async def mkriddle_embed(kdo, co):
|
||||||
|
embed = discord.Embed(title="", description="New abbreviation has been set!", color=0xe10077)
|
||||||
|
embed.add_field(name="Abbreviation", value=co, inline=True)
|
||||||
|
embed.add_field(name="Author", value=kdo, inline=True)
|
||||||
|
|
||||||
|
return(embed)
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
async def guess_embed(kdo, co, result, author, zkratka, solution):
|
||||||
|
|
||||||
|
if result == "correct":
|
||||||
|
embed = discord.Embed(title="", description=f":green_square: {kdo} guessed correctly!", color=0xe10077)
|
||||||
|
embed.add_field(name="Abbreviation", value=solution, inline=True)
|
||||||
|
embed.add_field(name="Author", value=author, inline=True)
|
||||||
|
|
||||||
|
if result == "incorrect":
|
||||||
|
trefil = 0
|
||||||
|
napoveda = ""
|
||||||
|
|
||||||
|
embed = discord.Embed(title="", description=f":red_square: {kdo} guessed incorretly!", color=0xe10077)
|
||||||
|
embed.add_field(name="Guess", value=co, inline=True)
|
||||||
|
embed.add_field(name="Abbreviation", value=f"{zkratka} by {author}", inline=True)
|
||||||
|
|
||||||
|
s = solution.split(" ")
|
||||||
|
g = co.split(" ")
|
||||||
|
|
||||||
|
for i in range(min(len(s), len(g))):
|
||||||
|
if g[i] == s[i]:
|
||||||
|
napoveda += f"{g[i]}\n"
|
||||||
|
trefil = 1
|
||||||
|
else:
|
||||||
|
napoveda += "X X X\n"
|
||||||
|
|
||||||
|
if trefil == 1:
|
||||||
|
embed.add_field(name="Words guessed correctly", value=napoveda, inline=False)
|
||||||
|
|
||||||
|
return(embed)
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
async def end_embed(kdo, zkratka, solution):
|
||||||
|
embed = discord.Embed(title="", description=f":checkered_flag: {kdo} ended guessing!", color=0xe10077)
|
||||||
|
embed.add_field(name="Abbreviation", value=zkratka, inline=True)
|
||||||
|
embed.add_field(name="Solution", value=solution, inline=True)
|
||||||
|
return(embed)
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
async def help_embed(commands):
|
||||||
|
embed = discord.Embed(title=":sparkles: Help :sparkles:", description=f"List of commands and their usage", color=0xe10077)
|
||||||
|
for c in commands:
|
||||||
|
embed.add_field(name=f"/{c.name}", value=c.description, inline=False)
|
||||||
|
return(embed)
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
@ -56,8 +123,8 @@ async def on_ready():
|
|||||||
#
|
#
|
||||||
|
|
||||||
#zadat hadanku serveru
|
#zadat hadanku serveru
|
||||||
@bot.tree.command(name="makeriddle")
|
@bot.tree.command(name="makeriddle", description="Makes abbreviation from given words for server to guess it's meaning")
|
||||||
@app_commands.describe(riddle = "few words from which I will make abbreviation for others to guess") #parametr commandu
|
@app_commands.describe(riddle = "Few words from which abbreviation will be made for others to guess") #parametr commandu
|
||||||
async def makeriddle(interaction: discord.Interaction, riddle: str):
|
async def makeriddle(interaction: discord.Interaction, riddle: str):
|
||||||
guildid = interaction.guild_id
|
guildid = interaction.guild_id
|
||||||
name = "[MKRIDDLE]"
|
name = "[MKRIDDLE]"
|
||||||
@ -73,19 +140,18 @@ async def makeriddle(interaction: discord.Interaction, riddle: str):
|
|||||||
if await precti(guildid, 'aktivni') == "ne":
|
if await precti(guildid, 'aktivni') == "ne":
|
||||||
zkratka = "".join(list(w[0].upper() for w in riddle.split(' ')))
|
zkratka = "".join(list(w[0].upper() for w in riddle.split(' ')))
|
||||||
await zapis_info_hadanka(guildid, "ano", interaction.user.id, riddle, zkratka)
|
await zapis_info_hadanka(guildid, "ano", interaction.user.id, riddle, zkratka)
|
||||||
await interaction.response.send_message(f"you have set the riddle to: **{riddle}**, you can end the guessing using /end", ephemeral=True)
|
await interaction.response.send_message(embed = (await mkriddle_embed(interaction.user.nick, zkratka)))
|
||||||
await interaction.channel.send(f"{interaction.user.nick} have set a new abbreviation to solve: **{zkratka}**! you can guess using /guess")
|
|
||||||
await logfile(guildid, name, f"user {interaction.user.id} set riddle to: {riddle}")
|
await logfile(guildid, name, f"user {interaction.user.id} set riddle to: {riddle}")
|
||||||
|
|
||||||
#hadat
|
#hadat
|
||||||
@bot.tree.command(name="guess")
|
@bot.tree.command(name="guess", description="Used to guess the meaning of current abbreviation")
|
||||||
@app_commands.describe(meaning = "The meaning of the abbreviation")
|
@app_commands.describe(meaning = "Your guess of the abbreviation meaning")
|
||||||
async def guess(interaction: discord.Interaction, meaning: str):
|
async def guess(interaction: discord.Interaction, meaning: str):
|
||||||
guildid = interaction.guild_id
|
guildid = interaction.guild_id
|
||||||
name = "[GUESS ]"
|
name = "[GUESS ]"
|
||||||
|
|
||||||
if os.path.exists(f'guild_data/guild_{guildid}.csv') == False:
|
if os.path.exists(f'guild_data/guild_{guildid}.csv') == False:
|
||||||
await interaction.response.send_message("there is nothing to guess, you can make others guess your abbreviation using /makeriddle", ephemeral=True)
|
await interaction.response.send_message("There is nothing to guess, you can make abbreviation using /makeriddle for others to guess", ephemeral=True)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
aktivni = str(await precti(guildid, 'aktivni'))
|
aktivni = str(await precti(guildid, 'aktivni'))
|
||||||
@ -94,55 +160,65 @@ async def guess(interaction: discord.Interaction, meaning: str):
|
|||||||
riddle_author = (bot.get_guild(guildid)).get_member(int(await precti(guildid, "zadavatel_id")))
|
riddle_author = (bot.get_guild(guildid)).get_member(int(await precti(guildid, "zadavatel_id")))
|
||||||
|
|
||||||
if interaction.user.id == riddle_author.id:
|
if interaction.user.id == riddle_author.id:
|
||||||
await interaction.response.send_message("you cant guess your own riddle!", ephemeral=True)
|
await interaction.response.send_message("You cant guess your own riddle!", ephemeral=True)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
solution = (await precti(guildid, "fraze")).lower()
|
solution = (await precti(guildid, "fraze")).lower()
|
||||||
|
pzkratka = await precti(guildid, 'zkratka')
|
||||||
guess = meaning.lower()
|
guess = meaning.lower()
|
||||||
|
|
||||||
if solution != guess:
|
if solution != guess:
|
||||||
await interaction.response.send_message(f"{interaction.user.nick}'s guess **({meaning})** is incorrect!")
|
result = "incorrect"
|
||||||
|
await interaction.response.send_message(embed = (await guess_embed(interaction.user.nick, guess, result, riddle_author.nick, pzkratka, solution)))
|
||||||
|
|
||||||
if solution == guess:
|
if solution == guess:
|
||||||
await interaction.response.send_message(f"{interaction.user.nick} have succesfully guessed {riddle_author.nick}'s riddle **({solution.lower()})**")
|
result = "correct"
|
||||||
|
await interaction.response.send_message(embed = (await guess_embed(interaction.user.nick, guess, result, riddle_author.nick, pzkratka, solution)))
|
||||||
await zapis_info_hadanka(guildid, "ne", "", "", "")
|
await zapis_info_hadanka(guildid, "ne", "", "", "")
|
||||||
await logfile(guildid, name, f"{interaction.user.nick} have succesfully guessed {riddle_author.nick}'s riddle ({solution.lower()})")
|
await logfile(guildid, name, f"{interaction.user.nick} have succesfully guessed {riddle_author.nick}'s riddle ({solution.lower()})")
|
||||||
|
|
||||||
if aktivni == "ne":
|
if aktivni == "ne":
|
||||||
await interaction.response.send_message("there is nothing to guess, you can make others guess your abbreviation using /makeriddle", ephemeral=True)
|
await interaction.response.send_message("There is nothing to guess, you can make abbreviation using /makeriddle for others to guess", ephemeral=True)
|
||||||
|
|
||||||
#ukoncit hadani autorem
|
#ukoncit hadani autorem
|
||||||
@bot.tree.command(name="end")
|
@bot.tree.command(name="end", description="Used to end active abbreviation by it's author or server admin")
|
||||||
async def end(interaction: discord.Interaction):
|
async def end(interaction: discord.Interaction):
|
||||||
guildid = interaction.guild_id
|
guildid = interaction.guild_id
|
||||||
name = "[ENDGUESS]"
|
name = "[ENDGUESS]"
|
||||||
|
|
||||||
if os.path.exists(f'guild_data/guild_{guildid}.csv') == False:
|
if os.path.exists(f'guild_data/guild_{guildid}.csv') == False:
|
||||||
await interaction.response.send_message("no active guessing, use /makeriddle", ephemeral=True)
|
await interaction.response.send_message("There is nothing to guess, you can make abbreviation using /makeriddle for others to guess", ephemeral=True)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
aktivni = str(await precti(guildid, 'aktivni'))
|
aktivni = str(await precti(guildid, 'aktivni'))
|
||||||
|
|
||||||
if aktivni == "ne":
|
if aktivni == "ne":
|
||||||
await interaction.response.send_message("no active guessing, use /makeriddle", ephemeral=True)
|
await interaction.response.send_message("There is nothing to guess, you can make abbreviation using /makeriddle for others to guess", ephemeral=True)
|
||||||
|
|
||||||
if aktivni == "ano":
|
if aktivni == "ano":
|
||||||
riddle_author = (bot.get_guild(guildid)).get_member(int(await precti(guildid, "zadavatel_id")))
|
riddle_author = (bot.get_guild(guildid)).get_member(int(await precti(guildid, "zadavatel_id")))
|
||||||
pzkratka = await precti(guildid, 'zkratka')
|
pzkratka = await precti(guildid, 'zkratka')
|
||||||
solution = await precti(guildid, 'fraze')
|
solution = await precti(guildid, 'fraze')
|
||||||
|
|
||||||
if riddle_author.id == interaction.user.id:
|
if riddle_author.id == interaction.user.id or interaction.user.guild_permissions.administrator == True:
|
||||||
await interaction.response.send_message(f"you have succesfully ended guessing of your abbreviation", ephemeral=True)
|
await interaction.response.send_message(embed = await end_embed(interaction.user.nick, pzkratka, solution))
|
||||||
await interaction.channel.send(f"{riddle_author.nick} have ended the guessing(**{pzkratka}, {solution}**)")
|
|
||||||
await zapis_info_hadanka(guildid, "ne", "", "", "")
|
await zapis_info_hadanka(guildid, "ne", "", "", "")
|
||||||
await logfile(guildid, name, f"{riddle_author.nick} have ended the guessing({pzkratka}, {solution})")
|
await logfile(guildid, name, f"{riddle_author.nick} have ended the guessing({pzkratka}, {solution})")
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
await interaction.response.send_message(f"you can't end guessing which you haven't started!", ephemeral=True)
|
await interaction.response.send_message(f"You can't end guessing which you haven't started!", ephemeral=True)
|
||||||
|
|
||||||
|
#help command
|
||||||
|
@bot.tree.command(name="help", description="Lists commands and their usage")
|
||||||
|
async def help(interaction: discord.Interaction):
|
||||||
|
commands = bot.tree.get_commands()
|
||||||
|
guildid = interaction.guild_id
|
||||||
|
await interaction.response.send_message(embed = await help_embed(commands))
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
TOKEN = open("gesbod_token.txt", 'r').read()
|
TOKEN = open("gesbod_token.txt", 'r').read()
|
||||||
bot.run(TOKEN)
|
bot.run(TOKEN)
|
||||||
|
Loading…
Reference in New Issue
Block a user