convert from Hungarian to English, remove pytz dependency, fix a bunch of issues

This commit is contained in:
csd4ni3l
2025-04-21 18:49:19 +02:00
parent 53370c6a8b
commit 960dec3256
4 changed files with 245 additions and 262 deletions

View File

@@ -1,4 +1,3 @@
MC Discord Bot
This is one of my Hungarian projects where i made a Discord bot with additional Minecraft features.
Its not going to be developed heavily.
This is one of my random projects where i made a Discord bot with additional Minecraft features, i released it as open source, if anyone wants templates or ideas for their own discord bot.

489
bot.py
View File

@@ -6,7 +6,6 @@ import json, ast
import traceback
from mcstatus import JavaServer
import time
import pytz
from discord.ext import tasks
import discord.utils
@@ -43,6 +42,43 @@ private_server_ip = settings["private_minecraft_server_ip"]
private_server_port = settings["private_minecraft_server_port"]
server_name = settings["server_name"]
commands = {
'Mod': [
['/clear {amount}', 'Deletes messages in the current channel'],
['/warn {user mention}', 'Gives a warning to the specified user, if they reach a certain number of warnings, it also gives a punishment.'],
['/mute {username}', 'Mutes a user'],
['/kick {user mention}', 'Kicks a user'],
['/ban {user mention}', 'Bans a user'],
['/unban {username}', 'Unbans a user'],
['/clear_member_msg {user mention} {number of messages}', 'Deletes only messages from a selected user in the current channel']],
'Fun': [
['/say {text}', 'The bot sends what you write.'],
['/suggest {idea}','Help us with an idea!'],
['/screenshot {link}','Take a screenshot of a page!']],
'Info': [
['/help', 'This command'],
['/userinfo {user mention} or /ui {user mention}','Information about a user'],
['/serverinfo or /si {user mention}','Information about our Discord server'],
['/ip', 'Shows the IP address of our Minecraft server'],
['/mcstats','Find out our server\'s current ping and player count']],
'Admin': [
['/giveaway {time} {number of winners} {prize}','Creates a giveaway in the current channel.'],
['/greroll {message id}','Rerolls the giveaway based on the given message ID.'],
['/send_reaction_role_message {channel mention}','Sends the reaction role panel in the mentioned channel'],
['/send_ticket_message {channel mention}','Sends the ticket panel in the mentioned channel'],
['/autoclose {time}','Closes the ticket after a given time if no messages are found'],
['/lock','Locks the current channel.'],
['/unlock','Unlocks the current channel.']]
}
categories = {
'Info': 'Information Commands e.g. /userinfo',
'Admin': 'Commands for admins',
'Mod': 'Commands for moderators.',
"Fun": 'Fun commands e.g. /say'}
time_convert = {"s": 1, "m": 60, "h": 3600,
"d": 86400, "w": 604800, "mo": 31536000}
giveaways = []
global players_before
players_before = 0
@@ -53,22 +89,19 @@ def get_minecraft_status():
def convert_duration(duration):
if 's' in duration:
return duration.replace('s', ' másodperc')
return duration.replace('s', ' seconds')
if 'm' in duration:
return duration.replace('m', ' perc')
return duration.replace('m', ' minutes')
if 'h' in duration:
return duration.replace('h', ' óra')
return duration.replace('h', ' hours')
if 'd' in duration:
return duration.replace('d', ' nap')
return duration.replace('d', ' days')
if 'w' in duration:
return duration.replace('w', ' hét')
return duration.replace('w', ' weeks')
if 'mo' in duration:
return duration.replace('mo', ' hónap')
return duration.replace('mo', ' months')
def convert_duration_to_seconds(duration):
time_convert = {"s": 1, "m": 60, "h": 3600,
"d": 86400, "w": 604800, "mo": 31536000}
return int(duration.split(duration[-1])[0]) * time_convert[duration[-1]]
def convert_seconds_to_date(seconds):
@@ -78,13 +111,13 @@ def convert_seconds_to_date(seconds):
result = ""
if days > 0:
result += "{} nap ".format(int(days))
result += "{} days ".format(int(days))
if hours > 0:
result += "{} óra ".format(int(hours))
result += "{} hours ".format(int(hours))
if minutes > 0:
result += "{} perc ".format(int(minutes))
result += "{} minutes ".format(int(minutes))
if seconds > 0 or not any([days, hours, minutes]):
result += "{} másodperc".format(int(seconds))
result += "{} seconds".format(int(seconds))
return result.strip()
@@ -95,7 +128,7 @@ async def update_mc_status():
await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name=f"{server_name} | {player_num} Online | /help"))
global players_before
if players_before == 0 or player_num != players_before:
await discord.utils.get(bot.guilds[0].channels, id=players_status_channel_id).edit(name=f"Játékosok: {player_num}")
await discord.utils.get(bot.guilds[0].channels, id=players_status_channel_id).edit(name=f"Players: {player_num}")
players_before = player_num
await discord.utils.get(bot.guilds[0].channels, id=ping_status_channel_id).edit(name=f"Ping: {round(ping,2)} ms")
@@ -111,7 +144,7 @@ async def update_giveaways():
time_left_in_seconds = giveaway['end_time'] - time.time()
time_left_in_str = convert_seconds_to_date(time_left_in_seconds)
embed = discord.Embed(
title="🎉 Giveaway 🎉", description=f"Reagálj 🎉 emotikonnal hogy jelentkezz!\nHátralevő idő: **{time_left_in_str}**\nNyeremény: **{giveaway['prize']}**\nNyertesek száma: **{giveaway['winner_num']}**", color=0xFFFF00)
title="🎉 Giveaway 🎉", description=f"React with 🎉 emoji to participate!\nTime remaining: **{time_left_in_str}**\nPrize: **{giveaway['prize']}**\nNumber of winners: **{giveaway['winner_num']}**", color=0xFFFF00)
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
else:
@@ -121,7 +154,7 @@ async def update_giveaways():
@bot.event
async def on_member_join(member):
if not join_channel_id == -1:
embed = discord.Embed(title=f'Üdvözöllek, {member.name}', color=discord.Colour.red(), description=f"👋 Üdvözöllek a(z) {server_name} discord szerverén, **{member.display_name}**!\nReméljük jól fogod érezni magad a szerverünkön!")
embed = discord.Embed(title=f'Welcome, {member.name}', color=discord.Colour.red(), description=f"👋 Welcome to the {server_name} discord server, **{member.display_name}**!\nWe hope you'll enjoy your time on our server!")
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
else:
@@ -133,7 +166,6 @@ async def on_member_join(member):
@bot.event
async def on_ready():
await bot.sync_commands()
for giveaway_dict in giveaways_json_list:
try:
channel = await bot.guilds[0].fetch_channel(giveaway_dict['channel_id'])
@@ -142,15 +174,16 @@ async def on_ready():
"duration": convert_duration(giveaway_dict['_duration']), "_duration": giveaway_dict['_duration'], "prize": giveaway_dict['prize'], "ended": giveaway_dict['ended'], "end_time": giveaway_dict['start_time']+convert_duration_to_seconds(giveaway_dict['_duration'])})
except:
continue
if not server_ip == 'example.com':
if not server_ip == 'HAMAROSAN!':
if not server_ip == 'COMING SOON!':
update_mc_status.start()
else:
await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name=f"{server_name} | /help"))
if not ping_status_channel_id == -1:
await discord.utils.get(bot.guilds[0].channels, id=ping_status_channel_id).edit(name=f"Ping: HAMAROSAN!")
await discord.utils.get(bot.guilds[0].channels, id=ping_status_channel_id).edit(name=f"Ping: COMING SOON!")
if not players_status_channel_id == -1:
await discord.utils.get(bot.guilds[0].channels, id=players_status_channel_id).edit(name=f"Játékosok: HAMAROSAN!")
await discord.utils.get(bot.guilds[0].channels, id=players_status_channel_id).edit(name=f"Players: COMING SOON!")
else:
await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name=f"{server_name} | /help"))
print(f'{server_name} bot online')
@@ -161,7 +194,7 @@ if not server_ip == 'example.com':
async def on_message(message):
if not message.author.bot:
if any(i in message.content.lower() for i in [' ip', ' ipje', ' ip ']) and message.content.endswith('?'):
await message.reply(f'A szerver ipje: **{server_ip}**')
await message.reply(f'The server IP is: **{server_ip}**')
@bot.event
async def on_member_update(before, after):
@@ -177,33 +210,33 @@ async def on_member_update(before, after):
new_roles = [role.name for role in after.roles if role not in before.roles]
if len(new_roles) != 0:
roles_changed = True
embed.add_field(name='Felhasználó által megkapott rangok:',value=','.join(new_roles))
embed.add_field(name='Roles received by user:',value=','.join(new_roles))
removed_roles = [role.name for role in before.roles if role not in after.roles]
if len(removed_roles) != 0:
roles_changed = True
embed.add_field(name='Felhasználótól elvett rangok:',value=','.join(removed_roles))
embed.add_field(name='Roles removed from user:',value=','.join(removed_roles))
if roles_changed:
embed.title += ' rangjai'
embed.title += ' roles'
if before.nick != after.nick:
nick_changed = True
embed.title += (' és beceneve' if roles_changed else ' beceneve')
embed.add_field(name='Felhasználó régi beceneve', value=str(before.nick).replace('None','Nincs becenév'))
embed.add_field(name='Felhasználó új beceneve', value=str(after.nick).replace('None','Nincs becenév'))
embed.title += (' and nickname' if roles_changed else ' nickname')
embed.add_field(name='User\'s old nickname', value=str(before.nick).replace('None','No nickname'))
embed.add_field(name='User\'s new nickname', value=str(after.nick).replace('None','No nickname'))
if before.display_name != after.display_name:
name_changed = True
embed.title += (' és neve' if roles_changed or nick_changed else ' neve')
embed.add_field(name='Felhasználó régi neve', value=str(before.nick))
embed.add_field(name='Felhasználó új neve', value=str(after.nick))
embed.title += (' and name' if roles_changed or nick_changed else ' name')
embed.add_field(name='User\'s old name', value=str(before.nick))
embed.add_field(name='User\'s new name', value=str(after.nick))
if roles_changed and not name_changed and not nick_changed:
embed.title += ' megváltoztak!' # Egy felhasználó rangjai megváltoztak!
embed.title += ' have changed!' # A user's roles have changed!
else:
embed.title += ' megváltozott!'
if not embed.title == f'{after.name} megváltozott!':
embed.title += ' has changed!'
if not embed.title == f'{after.name} has changed!':
if not after.avatar == None:
embed.set_thumbnail(url=after.avatar.url)
await channel.send(embed=embed)
@@ -217,11 +250,11 @@ async def on_message_delete(message):
return
log_channel: discord.channel.TextChannel = bot.get_channel(log_channel_id)
if not log_channel == '':
embed = discord.Embed(title=f'{message.author.name} üzenetét törölték a ' +
message.channel.name+f' csatornában!', color=discord.Colour.red())
embed = discord.Embed(title=f'{message.author.name}\'s message was deleted in ' +
message.channel.name+f' channel!', color=discord.Colour.red())
if not message.author.avatar == None:
embed.set_thumbnail(url=message.author.avatar.url)
embed.add_field(name='Tartalma: ', value=message.content)
embed.add_field(name='Content: ', value=message.content)
await log_channel.send(embed=embed)
except:
traceback.print_exc()
@@ -235,8 +268,8 @@ async def on_guild_channel_create(channel):
if not log_channel == '':
async for entry in channel.guild.audit_logs(limit=1, action=discord.AuditLogAction.channel_create):
creator = entry.user
embed = discord.Embed(title=creator.name+' létrehozta a ' +
channel.name+' csatornát!', color=discord.Colour.red())
embed = discord.Embed(title=creator.name+' created the ' +
channel.name+' channel!', color=discord.Colour.red())
if not creator.avatar == None:
embed.set_thumbnail(url=creator.avatar.url)
await log_channel.send(embed=embed)
@@ -252,8 +285,8 @@ async def on_guild_channel_delete(channel):
if not log_channel == '':
async for entry in channel.guild.audit_logs(limit=1, action=discord.AuditLogAction.channel_delete):
deleter = entry.user
embed = discord.Embed(title=deleter.name+' törölte a ' +
channel.name+' csatornát!', color=discord.Colour.red())
embed = discord.Embed(title=deleter.name+' deleted the ' +
channel.name+' channel!', color=discord.Colour.red())
if not deleter.avatar == None:
embed.set_thumbnail(url=deleter.avatar.url)
await log_channel.send(embed=embed)
@@ -268,13 +301,13 @@ async def on_message_edit(before, after):
return
log_channel: discord.channel.TextChannel = bot.get_channel(log_channel_id)
if not log_channel == '':
embed = discord.Embed(title=after.author.name+' módosította a saját üzenetét itt: ' +
embed = discord.Embed(title=after.author.name+' modified their own message in: ' +
after.channel.name+'!', color=discord.Colour.red())
if not after.avatar == None:
embed.set_thumbnail(url=after.author.avatar.url)
embed.add_field(name='Eredeti tartalma:',
embed.add_field(name='Original content:',
value=before.content)
embed.add_field(name='Módosított tartalma:', value=after.content)
embed.add_field(name='Modified content:', value=after.content)
await log_channel.send(embed=embed)
except:
traceback.print_exc()
@@ -288,8 +321,8 @@ async def on_bulk_message_delete(messages):
if not log_channel == '':
async for entry in messages[0].guild.audit_logs(limit=1, action=discord.AuditLogAction.message_bulk_delete):
deleter = entry.user
embed = discord.Embed(title=deleter.name+' törölt '+str(len(messages))+' üzenetet a ' +
messages[0].channel.name+' csatornában!', color=discord.Colour.red())
embed = discord.Embed(title=deleter.name+' deleted '+str(len(messages))+' messages in ' +
messages[0].channel.name+' channel!', color=discord.Colour.red())
if not deleter.avatar == None:
embed.set_thumbnail(url=deleter.avatar.url)
await log_channel.send(embed=embed)
@@ -308,16 +341,16 @@ async def end_giveaway(n, giveaway):
else:
winner_list = participant_mentions
if len(winner_list) == 0:
embed = discord.Embed(title="🎉 Giveaway Vége 🎉",
description=f"Háralevő idő: **A giveawaynek már vége van**\nNyeremény: **{giveaway['prize']}**\nNyertesek száma: **{giveaway['winner_num']}**\nSajnálom de senki sem nyert.", color=0xFF0000)
embed = discord.Embed(title="🎉 Giveaway Ended 🎉",
description=f"Time remaining: **The giveaway has ended**\nPrize: **{giveaway['prize']}**\nNumber of winners: **{giveaway['winner_num']}**\nI'm sorry but no one won.", color=0xFF0000)
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
else:
embed.set_footer(text=f"{server_name} Bot")
await message.edit(embed=embed)
else:
embed = discord.Embed(title="🎉 Giveaway Vége 🎉",
description=f"Hátralevő idő: **A giveawaynek már vége van**\nNyeremény: **{giveaway['prize']}**\nNyertesek száma: **{giveaway['winner_num']}**\nNyertes(ek): {', '.join(winner_list)}", color=0xFF0000)
embed = discord.Embed(title="🎉 Giveaway Ended 🎉",
description=f"Time remaining: **The giveaway has ended**\nPrize: **{giveaway['prize']}**\nNumber of winners: **{giveaway['winner_num']}**\nWinner(s): {', '.join(winner_list)}", color=0xFF0000)
await message.edit(content=', '.join(winner_list), embed=embed)
giveaways[n]['ended'] = True
@@ -326,25 +359,25 @@ async def end_giveaway(n, giveaway):
file.write(json.dumps(giveaways_json_list, indent=4))
@bot.slash_command()
async def greroll(interaction, message_id):
async def greroll(interaction: discord.Interaction, message_id):
if interaction.user.guild_permissions.administrator:
for n,giveaway in enumerate(giveaways):
if int(message_id) == giveaway["message_id"]:
try:
await end_giveaway(n, giveaway)
await interaction.response.send_message('Giveaway sikeresen újrasorsolva!')
await interaction.response.send_message('Giveaway successfully rerolled!')
return
except:
traceback.print_exc()
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def giveaway(interaction: discord.Interaction, duration: str, winners: int, prize: str):
if interaction.user.guild_permissions.administrator:
try:
embed = discord.Embed(
title="🎉 Giveaway 🎉", description=f"Reagálj 🎉 emotikonnal hogy jelentkezz!\nHátralevő idő: **{convert_duration(duration)}**\nNyeremény: **{prize}**\nNyertesek száma: **{winners}**", color=0xFFFF00)
title="🎉 Giveaway 🎉", description=f"React with 🎉 emoji to participate!\nTime remaining: **{convert_duration(duration)}**\nPrize: **{prize}**\nNumber of winners: **{winners}**", color=0xFFFF00)
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
else:
@@ -359,23 +392,23 @@ async def giveaway(interaction: discord.Interaction, duration: str, winners: int
except:
traceback.print_exc()
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def send_reaction_role_message(interaction, channel: discord.channel.TextChannel):
async def send_reaction_role_message(interaction: discord.Interaction, channel: discord.channel.TextChannel):
global settings
embed_description = "Reagálj a megfelelő emojikra a rangokért!"
embed_description = "React to the appropriate emojis for roles!"
for reaction_role_emoji, reaction_role_dict in reaction_roles.items():
embed_description += f"\n{reaction_role_emoji}: {reaction_role_dict['description']}"
embed = discord.Embed(title="Reakció Rangok", description=embed_description, color=discord.Colour.red())
embed = discord.Embed(title="Reaction Roles", description=embed_description, color=discord.Colour.red())
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
else:
embed.set_footer(text=f"{server_name} Bot")
message: discord.Message = await channel.send(embed=embed)
await interaction.response.send_message("Üzenet elküldve a megadott csatornába!\nÜzenet ID: " + str(message.id), ephemeral=True)
await interaction.response.send_message("Message sent to the specified channel!\nMessage ID: " + str(message.id), ephemeral=True)
for reaction_role_emoji, _ in reaction_roles.items():
await message.add_reaction(reaction_role_emoji)
@@ -408,9 +441,9 @@ async def on_raw_reaction_remove(payload):
await on_reaction_remove(payload.emoji, message, user)
@bot.slash_command()
async def suggest(interaction, suggestion):
async def suggest(interaction: discord.Interaction, suggestion):
if not suggestion_channel_id == -1:
embed = discord.Embed(title=str(interaction.user.name)+' új javaslata', description=suggestion, color=discord.Colour.red())
embed = discord.Embed(title=str(interaction.user.name)+'\'s new suggestion', description=suggestion, color=discord.Colour.red())
embed.set_thumbnail(url=interaction.user.avatar.url)
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
@@ -420,9 +453,9 @@ async def suggest(interaction, suggestion):
await message.add_reaction('')
await message.add_reaction('')
await interaction.response.send_message('Ötlet sikeresen közzétéve!')
await interaction.response.send_message('Suggestion successfully published!')
else:
await interaction.response.send_message('Ez a parancs nincs beállítva!', ephemeral=True)
await interaction.response.send_message('This command is not configured!', ephemeral=True)
async def close_ticket(interaction):
channel = interaction.message.channel
@@ -430,17 +463,17 @@ async def close_ticket(interaction):
await interaction.response.pong()
message = await interaction.channel.send(f'Törlés 5 másodperc múlva!')
message = await interaction.channel.send(f'Deletion in 5 seconds!')
for i in range(4, 0, -1):
await asyncio.sleep(1)
await message.edit(content=f'Törlés {i} másodperc múlva!')
await message.edit(content=f'Deletion in {i} seconds!')
await asyncio.sleep(0.5)
await channel.delete()
if not transcript_channel_id == -1:
transcript_channel = discord.utils.get(interaction.guild.channels, id=transcript_channel_id)
transcript_embed = discord.Embed(title=f"Jegy #{channel.name.split('-')[1]} bezárva")
transcript_embed = discord.Embed(title=f"Ticket #{channel.name.split('-')[1]} closed")
transcript_embed.add_field(name="Bezárta", value=closer.mention)
transcript_embed.add_field(name="Closed by", value=closer.mention)
await transcript_channel.send(embed=transcript_embed)
@@ -448,25 +481,25 @@ async def close_ticket(interaction):
async def lock(interaction):
if interaction.user.guild_permissions.manage_channels:
await interaction.channel.set_permissions(interaction.guild.default_role, send_messages=False)
await interaction.response.send_message(f'Csatorna lezárva {interaction.user.mention} által!')
await interaction.response.send_message(f'Channel locked by {interaction.user.mention}!')
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def unlock(interaction):
if interaction.user.guild_permissions.manage_channels:
await interaction.channel.set_permissions(interaction.guild.default_role, send_messages=True)
await interaction.response.send_message(f'Csatorna megnyitva {interaction.user.mention} által!')
await interaction.response.send_message(f'Channel unlocked by {interaction.user.mention}!')
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
async def ticket(interaction: discord.Interaction, ticket_tema):
async def ticket(interaction: discord.Interaction, ticket_topic):
guild = interaction.guild
if not ticket_category_id == -1:
ticket_category = discord.utils.get(
interaction.guild.categories, id=ticket_category_id)
else:
await interaction.response.send_message('Ticket létrehozása sikertelen. Ticket kategória nincs beállítva.')
await interaction.response.send_message('Ticket creation failed. Ticket category not configured.')
return
overwrites = {
interaction.guild.default_role: discord.PermissionOverwrite(read_messages=False, send_messages=False),
@@ -479,9 +512,9 @@ async def ticket(interaction: discord.Interaction, ticket_tema):
overwrites[role] = discord.PermissionOverwrite(
read_messages=True, send_messages=True)
else:
print(f'Invalid rang ID találva a Ticket Support rangokhoz!\nID: {role_id}')
print(f'Invalid role ID found in Ticket Support roles!\nID: {role_id}')
if ticket_tema == "Partnerkedés" and not partner_manager_role_id == -1:
if ticket_topic == "Partnership" and not partner_manager_role_id == -1:
overwrites[discord.utils.get(guild.roles, id=partner_manager_role_id)] = discord.PermissionOverwrite(
read_messages=True, send_messages=True)
@@ -493,18 +526,18 @@ async def ticket(interaction: discord.Interaction, ticket_tema):
with open('values.json', 'w') as file:
file.write(json.dumps(values_json, indent=4))
channel = await guild.create_text_channel('jegy-'+str(ticket_number), category=ticket_category, overwrites=overwrites)
await interaction.response.send_message(f'Ticket sikeresen megnyitva: <#{channel.id}>', ephemeral=True)
channel = await guild.create_text_channel('ticket-'+str(ticket_number), category=ticket_category, overwrites=overwrites)
await interaction.response.send_message(f'Ticket successfully opened: <#{channel.id}>', ephemeral=True)
view = discord.ui.View(timeout=None)
embed = discord.Embed(title='Ticket Létrehozva!')
button = discord.ui.Button(label='Ticket bezárása', custom_id=f'ticket_{ticket_number}_close_button')
embed = discord.Embed(title='Ticket Created!')
button = discord.ui.Button(label='Close Ticket', custom_id=f'ticket_{ticket_number}_close_button')
view.add_item(button)
bot.add_view(view)
embed.add_field(name='Ticket témája:',value=ticket_tema)
embed.add_field(name='Létrehozója:', value=interaction.user.mention)
embed.add_field(name='Ticket topic:',value=ticket_topic)
embed.add_field(name='Created by:', value=interaction.user.mention)
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
@@ -515,36 +548,36 @@ async def ticket(interaction: discord.Interaction, ticket_tema):
if not transcript_channel_id == -1:
transcript_channel = discord.utils.get(interaction.guild.channels, id=transcript_channel_id)
transcript_embed = discord.Embed(title=f"Jegy #{channel.name.split('-')[1]} létrehozva")
transcript_embed.add_field(name='Ticket témája:',value=ticket_tema)
transcript_embed.add_field(name="Létrehozta", value=interaction.user.mention)
transcript_embed = discord.Embed(title=f"Ticket #{channel.name.split('-')[1]} created")
transcript_embed.add_field(name='Ticket topic:',value=ticket_topic)
transcript_embed.add_field(name="Created by", value=interaction.user.mention)
await transcript_channel.send(embed=transcript_embed)
@bot.slash_command()
async def send_ticket_message(interaction, channel: discord.channel.TextChannel):
async def send_ticket_message(interaction: discord.Interaction, channel: discord.channel.TextChannel):
if interaction.user.guild_permissions.administrator:
if len(ticket_categories) == 0:
await interaction.response.send_message('Nincsenek hibajegy kategóriák beállítva!', ephemeral=True)
await interaction.response.send_message('No ticket categories are configured!', ephemeral=True)
return
embed = discord.Embed(
title="Ticket nyitás", description='''
⁉️ Problémát találtál? Bugot találtál? Nyiss ticketet!
title="Open a Ticket", description='''
⁉️ Found a problem? Found a bug? Open a ticket!
📌| Kérlek írd le a problémádat a ticket megnyitása után.
⚡| Egyik csapattagunk máris válaszolni fog!''')
📌| Please describe your problem after opening the ticket.
⚡| One of our team members will respond right away!''')
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
else:
embed.set_footer(text=f"{server_name} Bot")
view = discord.ui.View(timeout=None)
select = discord.ui.Select(options=[discord.SelectOption(
label=dolog, value=dolog, emoji=emoji) for emoji, dolog in ticket_categories], custom_id='ticket')
label=thing, value=thing, emoji=emoji) for emoji, thing in ticket_categories], custom_id='ticket')
view.add_item(select)
bot.add_view(view)
await channel.send(embed=embed, view=view)
await interaction.response.send_message('Ticket Panel sikeresen elküldve a megadott csatornába!', ephemeral=True)
await interaction.response.send_message('Ticket Panel successfully sent to the specified channel!', ephemeral=True)
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.event
async def on_interaction(interaction: discord.Interaction):
@@ -558,56 +591,65 @@ async def on_interaction(interaction: discord.Interaction):
await close_ticket(interaction)
@bot.slash_command()
async def warn(interaction, member: discord.Member, *, reason='Ok nem megadva'):
async def warn(interaction: discord.Interaction, member: discord.Member, *, reason='Reason not provided'):
if interaction.user.guild_permissions.moderate_members:
if interaction.user.id == member.id:
await interaction.response.send_message('Saját magadat nem figyelmeztetheted!', ephemeral=True)
return
# if interaction.user.id == member.id:
# await interaction.response.send_message('You cannot warn yourself!', ephemeral=True)
# return
if member.bot:
await interaction.response.send_message('Egy botot nem figyelmeztethetsz!', ephemeral=True)
await interaction.response.send_message('You cannot warn a bot!', ephemeral=True)
return
if not interaction.user.id == interaction.guild.owner_id and interaction.user.id in emergency_admin_ids and not interaction.user.top_role.position > member.top_role.position:
await interaction.response.send_message("Nincs jogod ezt a felhasználót figyelmeztetni!", ephemeral=True)
await interaction.response.send_message("You don't have permission to warn this user!", ephemeral=True)
return
if member.id in warns:
warns[member.id].append(reason)
if str(member.id) in warns:
warns[str(member.id)].append(reason)
else:
warns[member.id] = [reason]
warns[str(member.id)] = [reason]
await member.send(f'Figyelmeztetve lettél a következő okból: {reason}')
await interaction.response.send_message(f'A figyelmeztetést elküldtem, a következő okból: {reason}')
try:
await member.send(f'You have been warned for the following reason: {reason}')
except discord.errors.Forbidden:
pass
if len(warns[member.id]) == 2:
await member.timeout(datetime.timedelta(hours=1))
if len(warns[member.id]) == 3:
await member.kick()
if len(warns[member.id]) == 4:
await member.timeout(datetime.timedelta(days=1))
if len(warns[member.id]) == 5:
await member.timeout(datetime.timedelta(days=3))
if len(warns[member.id]) == 6:
await member.ban(reason='Elérte a 6 figyelmeztetést, ezért automatikusan bannoltam')
try:
if len(warns[str(member.id)]) == 2:
await member.timeout(datetime.datetime.now() + datetime.timedelta(hours=1))
if len(warns[str(member.id)]) == 3:
await member.kick()
if len(warns[str(member.id)]) == 4:
await member.timeout(datetime.datetime.now() + datetime.timedelta(days=1))
if len(warns[str(member.id)]) == 5:
await member.timeout(datetime.datetime.now() + datetime.timedelta(days=3))
if len(warns[str(member.id)]) == 6:
await member.ban(reason='The member reached 6 warns.')
await interaction.response.send_message(f'Warning sent for the following reason: {reason}')
except discord.errors.Forbidden:
await interaction.response.send_message("I was not able to punish the user due to missing permissions.")
with open('warns.json', 'w') as file:
file.write(json.dumps(warns, indent=4))
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def mcstats(interaction: discord.Interaction):
if not server_ip == 'example.com':
if not server_ip == 'HAMAROSAN!':
if not server_ip == 'COMING SOON!':
try:
await interaction.response.defer()
status = get_minecraft_status()
except:
traceback.print_exc()
await interaction.followup.send('A szerver nem elérhető!')
await interaction.followup.send('The server is not available!')
return
embed = discord.Embed(title='MC Statisztikák', color=discord.Colour.red())
embed.add_field(name="Online Játékosok",value=str(status.players.online))
embed = discord.Embed(title='MC Statistics', color=discord.Colour.red())
embed.add_field(name="Online Players",value=str(status.players.online))
embed.add_field(name="Ping",value=f"{round(status.latency,2)} ms")
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
@@ -615,51 +657,51 @@ async def mcstats(interaction: discord.Interaction):
embed.set_footer(text=f"{server_name} Bot")
await interaction.followup.send(embed=embed)
else:
await interaction.response.send_message("IP HAMAROSAN!")
await interaction.response.send_message("IP COMING SOON!")
else:
await interaction.response.send_message("Ez a parancs ki van kapcsolva!", ephemeral=True)
await interaction.response.send_message("This command is disabled!", ephemeral=True)
@bot.slash_command()
async def kick(interaction, member: discord.Member, reason=None):
async def kick(interaction: discord.Interaction, member: discord.Member, reason=None):
if interaction.user.guild_permissions.kick_members:
if interaction.user.id == member.id:
await interaction.response.send_message('Saját magadat nem rúghatod ki!', ephemeral=True)
await interaction.response.send_message('You cannot kick yourself!', ephemeral=True)
return
if bot.user.id == member.id:
await interaction.response.send_message('A botot nem rúghatod ki!', ephemeral=True)
await interaction.response.send_message('You cannot kick the bot!', ephemeral=True)
return
if not interaction.user.id == interaction.guild.owner_id and interaction.user.id in emergency_admin_ids and not interaction.user.top_role.position > member.top_role.position:
await interaction.response.send_message("Nincs jogod ezt a felhasználót kirúgni!", ephemeral=True)
await interaction.response.send_message("You don't have permission to kick this user!", ephemeral=True)
return
await member.kick(reason=reason)
await interaction.response.send_message(f'A {member.name} felhasználó ki lett rúgva!')
await interaction.response.send_message(f'User {member.name} has been kicked!')
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def ban(interaction: discord.Interaction, member: discord.Member, reason=None):
if interaction.user.guild_permissions.ban_members:
if interaction.user.id == member.id:
await interaction.response.send_message('Saját magadat nem tilthatod ki!', ephemeral=True)
await interaction.response.send_message('You cannot ban yourself!', ephemeral=True)
return
if bot.user.id == member.id:
await interaction.response.send_message('A botot nem tilthatod ki!', ephemeral=True)
await interaction.response.send_message('You cannot ban the bot!', ephemeral=True)
return
if not interaction.user.id == interaction.guild.owner_id and interaction.user.id in emergency_admin_ids and not interaction.user.top_role.position > member.top_role.position:
await interaction.response.send_message("Nincs jogod ezt a felhasználót kitiltani!", ephemeral=True)
await interaction.response.send_message("You don't have permission to ban this user!", ephemeral=True)
return
if not reason == None:
await member.ban(reason=reason)
else:
await member.ban()
await interaction.response.send_message(f'A {member.name} felhasználó ki lett tiltva!')
await interaction.response.send_message(f'User {member.name} has been banned!')
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def unban(interaction, member_id: int, reason=None):
async def unban(interaction: discord.Interaction, member_id: int, reason=None):
if interaction.user.guild_permissions.ban_members and interaction.user.guild_permissions.administrator:
banned_users = await interaction.guild.bans()
@@ -671,35 +713,33 @@ async def unban(interaction, member_id: int, reason=None):
await interaction.guild.unban(user, reason=reason)
else:
await interaction.guild.unban(user)
await interaction.response.send_message(f'A {user.name} felhasználó kitiltása fel lett oldva!')
await interaction.response.send_message(f'User {user.name} has been unbanned!')
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def mute(interaction, member: discord.Member, time):
async def mute(interaction: discord.Interaction, member: discord.Member, time):
if interaction.user.guild_permissions.moderate_members:
if interaction.user.id == member.id:
await interaction.response.send_message('Saját magadat nem muteolhatod!', ephemeral=True)
await interaction.response.send_message('You cannot mute yourself!', ephemeral=True)
return
if member.bot:
await interaction.response.send_message('Egy botot nem muteolhatsz!', ephemeral=True)
await interaction.response.send_message('You cannot mute a bot!', ephemeral=True)
return
if not interaction.user.id == interaction.guild.owner_id and interaction.user.id in emergency_admin_ids and not interaction.user.top_role.position > member.top_role.position:
time_convert = {"s": 1, "m": 60, "h": 3600,
"d": 86400, "w": 604800, "mo": 31536000}
seconds = int(time.split(time[-1])[0]) * time_convert[time[-1]]
duration = datetime.timedelta(seconds=seconds)
await member.timeout(duration)
await interaction.response.send_message(f'{member.name} muteolva lett {seconds} másodpercig')
await interaction.response.send_message(f'{member.name} has been muted for {seconds} seconds')
else:
await interaction.response.send_message('Nem muteolhatsz nálad magasabb rangú felhasználót!!')
await interaction.response.send_message('You cannot mute a user with a higher role than yours!')
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def userinfo(interaction, tag: discord.Member = None):
async def userinfo(interaction: discord.Interaction, tag: discord.Member = None):
member = tag or interaction.user
roles = [i.name for i in member.roles]
roles.remove("@everyone")
@@ -716,22 +756,22 @@ async def userinfo(interaction, tag: discord.Member = None):
if member.avatar:
embed.set_thumbnail(url=member.avatar.url)
embed.add_field(name='Felhasználó neve', value=f"{member.name}", inline=False)
embed.add_field(name='Username', value=f"{member.name}", inline=False)
embed.add_field(name='ID', value=str(member.id), inline=False)
embed.add_field(name='Státusz', value=str(member.status).replace('idle', 'Tétlen').replace('dnd', 'Elfoglalt').replace('online', 'Elérhető').replace('offline', 'Nem elérhető'), inline=False)
embed.add_field(name='Profil Létrehozva', value=member.created_at.strftime("%b %d, %Y"), inline=False)
embed.add_field(name='Fiók Kor', value=f"{account_age} nap", inline=False)
embed.add_field(name='Csatlakozott a Szerverre', value=member.joined_at.strftime("%b %d, %Y"), inline=False)
embed.add_field(name='Jelenlegi Tevékenység', value=activity, inline=False)
embed.add_field(name='Status', value=str(member.status).replace('idle', 'Idle').replace('dnd', 'Busy').replace('online', 'Available').replace('offline', 'Not Available'), inline=False)
embed.add_field(name='Profile Created', value=member.created_at.strftime("%b %d, %Y"), inline=False)
embed.add_field(name='Account Age', value=f"{account_age} days", inline=False)
embed.add_field(name='Joined Server', value=member.joined_at.strftime("%b %d, %Y"), inline=False)
embed.add_field(name='Current Activity', value=activity, inline=False)
embed.add_field(name='Rangok', value='\n'.join(roles) or "Nincs rangja", inline=False)
embed.add_field(name='Legmagasabb rang', value=roles[-1] if roles else "Nincs rangja", inline=False)
embed.add_field(name='Roles', value='\n'.join(roles) or "No roles", inline=False)
embed.add_field(name='Highest Role', value=roles[-1] if roles else "No roles", inline=False)
embed.add_field(name='Nitro Boost?', value='Igen' if is_boosting else 'Nem', inline=False)
embed.add_field(name='Nitro Boost?', value='Yes' if is_boosting else 'No', inline=False)
if is_boosting:
embed.add_field(name='Boostolás kezdete', value=boosting_since.strftime("%b %d, %Y"), inline=False)
embed.add_field(name='Boosting Since', value=boosting_since.strftime("%b %d, %Y"), inline=False)
embed.add_field(name='Bot?', value='Igen' if member.bot else 'Nem', inline=False)
embed.add_field(name='Bot?', value='Yes' if member.bot else 'No', inline=False)
if bot.user.avatar:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
@@ -741,90 +781,58 @@ async def userinfo(interaction, tag: discord.Member = None):
await interaction.response.send_message(embed=embed)
@bot.slash_command()
async def ui(interaction, member: discord.Member = None):
async def ui(interaction: discord.Interaction, member: discord.Member = None):
await userinfo(interaction, member)
if not server_ip == 'example.com':
@bot.slash_command()
async def ip(interaction):
await interaction.response.send_message(f'A szerver ipje: **{server_ip}**')
await interaction.response.send_message(f'Server IP: **{server_ip}**')
@bot.slash_command()
async def help(interaction, help_tema=None):
embed = discord.Embed(title='Bot Parancsok', color=discord.Colour.red())
parancsok = {
'Mod': [
['/clear {mennyiség}', 'Törli a jelenlegi csatornában lévő üzeneteket'],
['/warn {felhasználó említése}', 'Egy figyelmeztetést ad a megadott felhasználónak, ha az elért egy számú figyelmeztetést, büntetést is ad.'],
['/mute {felhasználó neve}', 'Lenémít egy felhasználót'],
['/kick {felhasználó említése}', 'Kirúg egy felhasználót'],
['/ban {felhasználó említése}', 'Kitilt egy felhasználót'],
['/unban {felhasználó neve}', 'Unbannol egy felhasználót'],
['/clear_member_msg {felhasználó említése} {üzenetek száma}', 'Csak egy kiválszott felhasználó üzeneteit törli a jelenlegi csatornában']],
'Fun': [
['/say {szöveg}', 'A bot elküldi amit írsz.'],
['/suggest {ötlet}','Segíts nekünk egy ötlet írásával!'],
['/screenshot {link}','Készíts egy screenshotot egy oldalról!']],
'Infó': [
['/help', 'Ez a parancs'],
['/userinfo {felhasználó említés} vagy /ui {felhasználó említés}','Információk egy felhasználóról'],
['/serverinfo vagy /si {felhasználó említés}','Információk a dc szerverünkről'],
['/ip', 'Kiírja a minecraft szerverünk ip címét'],
['/mcstats','Tudd meg szerverünk jelenlegi pingjét és játékos számát']],
'Admin': [
['/giveaway {idő} {nyertesek száma} {nyeremény}','Csinál egy giveawayt a jelenlegi csatornában.'],
['/greroll {üzenet idja}','A megadott üzenet id alapján a giveawayt fogja újrasorsolni..'],
['/send_reaction_role_message {csatorna említése}','Elküldi a reakció rang panelt az említett csatornában'],
['/send_ticket_message {csatorna említése}','Elküldi a hibajegy panelt az említett csatornában'],
['/autoclose {idő}','Adott idő után ha nem talál üzenetet, akkor bezárja a ticketet'],
['/lock','Lezárja a jelenlegi csatornát.'],
['/unlock','Felnyitja a jelenlegi csatornát.']]
}
kategoria_leirasok = {
'Infó': 'Információs Parancsok pl /userinfo',
'Admin': 'Adminoknak szánt parancsok',
'Mod': 'Moderátoroknak szánt parancsok.',
"Fun": 'Fun parancsok pl. /say'}
if help_tema != None:
if parancsok.get(help_tema.title()) != None:
for parancs in parancsok[help_tema.title()]:
async def help(interaction: discord.Interaction, topic=None):
embed = discord.Embed(title='Bot Commands', color=discord.Colour.red())
if topic != None:
if commands.get(topic.title()) != None:
for parancs in commands[topic.title()]:
embed.add_field(name=parancs[0], value=parancs[1])
else:
await interaction.response.send_message('Ez a help kategória nem létezik!')
await interaction.response.send_message('This help category does not exist!')
return
# for kategoria in parancsok:
# for parancs in parancsok[kategoria]:
# if parancs[0].replace('/', '').startswith(str(help_tema)):
# embed.add_field(name=parancs[0], value=parancs[1])
# break
else:
for kategoria in parancsok:
embed.add_field(name=kategoria, value=kategoria_leirasok[kategoria])
for category in commands:
embed.add_field(name=category, value=categories[category])
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
else:
embed.set_footer(text=f"{server_name} Bot")
await interaction.response.send_message(embed=embed)
@bot.slash_command()
async def serverinfo(interaction: discord.Interaction):
server = interaction.guild
roles = [role.name for role in server.roles]
roles.reverse()
embed = discord.Embed(title='Szerver infó', color=discord.Colour.red())
embed.add_field(name='Név', value=server.name, inline=False)
embed = discord.Embed(title='Server Info', color=discord.Colour.red())
embed.add_field(name='Name', value=server.name, inline=False)
embed.add_field(name='ID', value=server.id, inline=False)
embed.add_field(name='Rangok száma', value=str(len(server.roles)), inline=False)
embed.add_field(name='Tagok száma', value=str(len(server.members)), inline=False)
embed.add_field(name='Emberek száma', value=str(sum([1 if not member.bot else 0 for member in server.members])), inline=False)
embed.add_field(name='Botok száma', value=str(sum([1 if member.bot else 0 for member in server.members])), inline=False)
embed.add_field(name='Legmagasabb rang', value=roles[0], inline=False)
embed.add_field(name="Boostok száma", value=server.premium_subscription_count, inline=False)
#embed.add_field(name="Botok", value=server.premium_subscription_count, inline=False)
embed.add_field(name='Number of Roles', value=str(len(server.roles)), inline=False)
embed.add_field(name='Number of Members', value=str(len(server.members)), inline=False)
embed.add_field(name='Number of Humans', value=str(sum([1 if not member.bot else 0 for member in server.members])), inline=False)
embed.add_field(name='Number of Bots', value=str(sum([1 if member.bot else 0 for member in server.members])), inline=False)
embed.add_field(name='Highest Role', value=roles[0], inline=False)
embed.add_field(name="Number of Boosts", value=server.premium_subscription_count, inline=False)
if not bot.user.avatar == None:
embed.set_footer(text=f"{server_name} Bot", icon_url=bot.user.avatar.url)
else:
embed.set_footer(text=f"{server_name} Bot")
await interaction.response.send_message(embed=embed)
@bot.slash_command()
@@ -832,67 +840,46 @@ async def si(interaction):
await serverinfo(interaction)
@bot.slash_command()
async def clear(interaction: discord.Interaction, mennyiseg: int):
async def clear(interaction: discord.Interaction, amount: int):
if interaction.user.guild_permissions.manage_messages:
await interaction.channel.purge(limit=mennyiseg+1)
response = await interaction.response.send_message(f'{mennyiseg} üzenet törölve!')
await interaction.channel.purge(limit=amount + 1)
response = await interaction.response.send_message(f'{amount} messages deleted!')
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def say(interaction, szoveg):
async def say(interaction: discord.Interaction, text):
if interaction.user.guild_permissions.manage_messages:
if '<@' in szoveg or "@everyone" in szoveg or "@here" in szoveg:
await interaction.response.send_message('Pinget nem használhatsz egy say parancsban!', ephemeral=True)
if '<@' in text or "@everyone" in text or "@here" in text:
await interaction.response.send_message('You cannot use pings in a say command!', ephemeral=True)
return
await interaction.channel.send(szoveg)
#await interaction.response.send_message(szoveg)
await interaction.channel.send(text)
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
def check_member_msg_purge(message, member, amount):
global cleared_num
if member == message.author:
cleared_num += 1
return cleared_num <= amount
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
@bot.slash_command()
async def clear_member_msg(interaction, amount: int, member: discord.Member):
if interaction.user.guild_permissions.manage_messages:
global cleared_num
cleared_num = 0
if not amount == 'all':
await interaction.channel.purge(check=lambda message: member == message.author)
else:
await interaction.channel.purge(check=lambda message, member=member, amount=amount:check_member_msg_purge(message, member, amount))
await interaction.channel.send(amount.replace('all', 'összes')+' '+str(member)+' által írt üzenet törölve')
@bot.slash_command()
async def autoclose(interaction, duration):
async def autoclose(interaction: discord.Interaction, duration):
if interaction.user.guild_permissions.manage_channels:
ticket_category = discord.utils.get(
interaction.channel.guild.categories, id=ticket_category_id)
if interaction.channel.category == ticket_category:
time_convert = {"s": 1, "m": 60, "h": 3600,
"d": 86400, "w": 604800, "mo": 31536000}
seconds = int(duration.split(duration[-1])[0]) * time_convert[duration[-1]]
await interaction.response.send_message(f'Sikeres autoclose művelet! Ha ticketben nem lesz üzenet {seconds} másodperc után, a ticket automatikusan zárolva lesz!')
await interaction.response.send_message(f'Successful autoclose operation! If there are no messages in the ticket after {seconds} seconds, the ticket will be automatically closed!')
await asyncio.sleep(seconds)
messages = await interaction.channel.history(limit=1).flatten()
last_message = messages[0]
time_difference = datetime.datetime.now(pytz.timezone('Europe/Berlin')) - last_message.created_at.replace(tzinfo=pytz.UTC)
if time_difference.total_seconds() >= seconds:
await interaction.channel.send("Ticket inaktivitás miatt zárolva.")
time_difference = time.time() - last_message.created_at.timestamp()
if time_difference >= seconds:
await interaction.channel.send("Ticket locked due to inactivity.")
await asyncio.sleep(3)
await interaction.channel.delete()
else:
await interaction.response.send_message('Ezt a parancsot csak ticketekben lehet használni!')
await interaction.response.send_message('This command can only be used in tickets!')
else:
await interaction.response.send_message("Nincs jogod használni ezt a parancsot!", ephemeral=True)
await interaction.response.send_message("You don't have permission to use this command!", ephemeral=True)
if not settings['token'] == 'TOKEN':
if settings['token']:
bot.run(settings['token'])
else:
print('Írd át a token változót a settings.json fájlban a bot elindításához!')
print('Change the token variable in the settings.json file to start the bot!')

View File

@@ -1,12 +1,11 @@
[project]
name = "mc-bot"
version = "0.1.0"
description = "MC discord bot"
description = "MC Discord Bot"
readme = "README.md"
requires-python = ">=3.13"
requires-python = ">=3.11"
dependencies = [
"audioop-lts>=0.2.1",
"mcstatus>=11.1.1",
"py-cord[voice]>=2.6.1",
"pytz>=2025.2",
]

View File

@@ -1,12 +1,10 @@
{
"log_channel_id": -1,
"ticket_categories": [
["⛔", "Hiba bejelentése"],
["🏆", "TGF"],
["🤡", "Csaló Jelentése"],
["🎁", "Jutalom átvétele"],
["❓", "Egyéb kérdések"],
["🤝", "Partnerkedés"]
["⛔", "Report Bugs"],
["🎁", "Rewards"],
["", "Other Questions"],
["🤝", "Partners"]
],
"join_channel_id": -1,
"join_autorole_id": -1,