Untitled
plain_text
a month ago
19 kB
0
Indexable
Never
import discord from discord import app_commands from discord.ext import commands import requests import pytz import random import sqlite3 import json import jdatetime from discord.ext import tasks intents = discord.Intents.all() bot = commands.Bot(command_prefix="!", intents=intents) connection = sqlite3.connect('database.db') cursor = connection.cursor() @bot.event async def on_ready(): bot.remove_command("help") print("Bot is ready.") bot_status.start() check_alarms_task.start() cursor.execute('''CREATE TABLE IF NOT EXISTS alarms (user_id INTEGER, alarm_datetime TEXT, matn_alarm TEXT);''') connection.commit() await bot.tree.sync() @tasks.loop(seconds=3) async def bot_status(): servers = len(bot.guilds) await bot.change_presence(status=discord.Status.dnd, activity=discord.Activity( type=discord.ActivityType.watching, name=f'{servers} Servers!')) @tasks.loop(seconds=5) async def check_alarms_task(): tehran_tz = pytz.timezone("Asia/Tehran") current_time = jdatetime.datetime.now(tz=tehran_tz) current_time_str = current_time.strftime("%Y-%m-%d %H:%M") cursor.execute("SELECT * FROM alarms WHERE alarm_datetime <= ?", (current_time_str,)) alarms = cursor.fetchall() for alarm in alarms: user_id, alarm_datetime_str, alarm_text = alarm user = bot.get_user(user_id) if user: alarm_datetime = jdatetime.datetime.strptime(alarm_datetime_str, "%Y-%m-%d %H:%M") alarm_datetime = tehran_tz.localize(alarm_datetime) if current_time >= alarm_datetime: embed = discord.Embed(title="Alarm!", description=f"Matn_Alarm: {alarm_text}", color=discord.Color.red()) embed.add_field(name="Taarikh Alarm", value=f"{alarm_datetime.strftime('%Y-%m-%d %H:%M')}", inline=False) await user.send(embed=embed) cursor.execute("DELETE FROM alarms WHERE user_id = ? AND alarm_datetime = ?", (user_id, alarm_datetime_str)) connection.commit() @check_alarms_task.before_loop async def before_check_alarms_task(): await bot.wait_until_ready() @bot.event async def on_presence_update(before, after): if not after.bot: if before.status != after.status: cursor.execute('''CREATE TABLE IF NOT EXISTS statusdata(user TEXT PRIMARY KEY, status TEXT, time TEXT);''') connection.commit() tehran_timezone = pytz.timezone('Asia/Tehran') now = jdatetime.datetime.now(tz=tehran_timezone) shamsi_date_str = now.strftime('%Y/%m/%d %H:%M:%S') cursor.execute("INSERT OR REPLACE INTO statusdata(user, status, time) VALUES (?,?,?)", (after.mention, str(after.status), f"{shamsi_date_str}")) connection.commit() @bot.event async def on_member_remove(member): cursor.execute('DELETE FROM statusdata WHERE user = ?', (member,)) connection.commit() @bot.event async def on_message(message): await bot.process_commands(message) @bot.tree.command(name="joke" ,description="Jok Goftan" ) async def joke(interaction : discord.Interaction): if interaction.guild: req = requests.get("http://api.codebazan.ir/jok") embed=discord.Embed(title="Joke", color=0xffd500) embed.add_field(name="", value=f"{req.text}", inline=False) await interaction.response.send_message(embed=embed) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="status-updates",description="Didan Zaman Akharin Taghir Status Yek Member") async def status_updates(interaction:discord.Interaction, member: discord.Member): if interaction.guild: cursor.execute("SELECT * FROM statusdata WHERE user = ?", (member.mention,)) status_info = cursor.fetchone() if status_info: user, status, time = status_info embed = discord.Embed(title="Status Update", color=0x00f0ff) embed.add_field(name="User", value=user, inline=False) embed.add_field(name="Status", value=status, inline=False) embed.add_field(name="Akharin Taghir Status", value=time, inline=False) await interaction.response.send_message(embed=embed) else: await interaction.response.send_message("No status update data found for the specified user.") else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="random", description="Goftan Adad Random Az Beyn 2 Adad" ) @app_commands.describe(x="Adad Aval") @app_commands.describe(y="Adad Dovom") async def rand(interaction : discord.Interaction , x:int , y:int): if interaction.guild: randin = random.randint(x,y) embed=discord.Embed(title="Random Number", color=0x00bfff) embed.add_field(name="", value=f"Adad Random Beyn {x} Va {y}:\nAdad:{randin}", inline=False) await interaction.response.send_message(embed=embed) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="ping", description="Moshakhasat Bot" ) async def ping(interaction : discord.Interaction): if interaction.guild: await interaction.response.send_message("Pong!\nPing: {}ms".format(round(bot.latency*1000)),ephemeral=True) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="clear" , description="Clear Kardan Message Ha" ) @app_commands.describe(number='Tedad Message Braye Delete Kardan') @app_commands.checks.has_permissions(manage_messages=True) async def clear(interaction: discord.Interaction ,number:int): if interaction.guild : embed= discord.Embed(title="", description="**Dar Hale Hazf Kardan ....**", color=discord.Color.yellow()) await interaction.response.send_message(embed=embed,ephemeral=True) num = number chan = interaction.channel Messages = [] async for message in chan.history(limit=num) : Messages.append(message) try: await chan.delete_messages(Messages) except Exception as e: embed= discord.Embed(title="Error", description="**Dar Hazf Kardan Message Ha Moshkeli Pish Amade Ast**", color=discord.Color.red()) await interaction.edit_original_response("Dar Hazf Kardan Message Ha Moshkeli Pish Amade Ast") print(e) tedad = len(Messages) embed = discord.Embed(title="Messages Ha Hazf Shod ✅", description=f"**Tedad : `{tedad}`**", color=discord.Color.green()) await interaction.edit_original_response(embed=embed) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="set-alarm", description="Payam Dadan Va Yadavari Dar DM Shoma Dar Time Moshakhas Shode") @app_commands.describe(tarikh="Mesal : 1402-06-02 22:32") async def set_alarm(interaction:discord.Interaction, tarikh: str, matn_alarm: str): if interaction.guild : cursor.execute('''CREATE TABLE IF NOT EXISTS alarms (user_id INTEGER, alarm_datetime TEXT, matn_alarm TEXT);''') connection.commit() try: datetime_obj = jdatetime.datetime.strptime(tarikh, "%Y-%m-%d %H:%M") except ValueError: await interaction.response.send_message("Lotfan Az Format YYYY-MM-DD HH:MM. Estefade Konid (Shamsi)") return user_id = interaction.user.id alarm_datetime = datetime_obj.strftime("%Y-%m-%d %H:%M") cursor.execute("INSERT INTO alarms VALUES (?, ?, ?)", (user_id, alarm_datetime, matn_alarm)) connection.commit() await interaction.response.send_message("Alarm set successfully!",ephemeral=True) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="help" , description="Commands Help") async def help(interaction:discord.Interaction): if interaction.guild: listcommands = [] for c in await bot.tree.fetch_commands(): listcommands.append(f"- {c.mention} {c.description} \n") embed=discord.Embed(title="**Commands Help**", description="".join(map(str , listcommands)) , color=0x2b2d31) await interaction.response.send_message(embed=embed , ephemeral=True) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="show-alarms", description="Neshan Dadan Alarman") async def show_alarms(interaction: discord.Interaction): if interaction.guild: cursor.execute("SELECT * FROM alarms WHERE user_id = ?", (interaction.user.id,)) user_alarms = cursor.fetchall() if not user_alarms: await interaction.response.send_message("Shoma Hich Alarmi Nadarid.", ephemeral=True) return tehran_tz = pytz.timezone("Asia/Tehran") now = jdatetime.datetime.now(tz=tehran_tz) embed = discord.Embed(title="List Alarm Ha", color=discord.Color.blue()) for idx, alarm in enumerate(user_alarms, start=1): user_id, alarm_datetime_str, alarm_text = alarm alarm_datetime = jdatetime.datetime.strptime(alarm_datetime_str, "%Y-%m-%d %H:%M") alarm_datetime = tehran_tz.localize(alarm_datetime) time_difference = alarm_datetime - now days = time_difference.days hours, remainder = divmod(time_difference.seconds, 3600) minutes = int(remainder / 60)+5 embed.add_field( name=f"Alarm {idx}", value=( f"<@{user_id}>\n" f"Matn Alarm: {alarm_text}\n" f"Taarikh Alarm: {alarm_datetime.strftime('%Y-%m-%d %H:%M')}\n" f"{days} Rooz, {hours} Saat, {minutes} Daghighe Moonde" ), inline=False ) await interaction.response.send_message(embed=embed, ephemeral=True) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="remove-alarm", description="Hazf Kardan Alarm Ba Tavaajjoh Be Taarikh") @app_commands.describe(tarikh="Mesal: 1402-06-02 22:32") async def remove_alarm(interaction: discord.Interaction, tarikh: str): if interaction.guild : try: datetime_obj = jdatetime.datetime.strptime(tarikh, "%Y-%m-%d %H:%M") except ValueError: await interaction.response.send_message("Lotfan Az Format YYYY-MM-DD HH:MM. Estefade Konid (Shamsi)", ephemeral=True) return user_id = interaction.user.id alarm_datetime = datetime_obj.strftime("%Y-%m-%d %H:%M") cursor.execute("DELETE FROM alarms WHERE user_id = ? AND alarm_datetime = ?", (user_id, alarm_datetime)) connection.commit() await interaction.response.send_message("Alarm removed successfully!", ephemeral=True) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="add-role-to-member",description="Dadan Role Be Yek Member") @app_commands.checks.has_permissions(administrator=True) async def addrole(interaction:discord.Interaction, member: discord.Member, role: discord.Role): if interaction.guild : await member.add_roles(role) await interaction.response.send_message(f'{role.mention} Be {member.mention} Ezafe Shod ✅',ephemeral=True) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name='add-role-to-role',description="Dadan Role2 Be Kesani Ke Role1 Ro Darand") @app_commands.checks.has_permissions(administrator=True) async def add_role_to_role(interaction:discord.Interaction, role1: discord.Role, role2: discord.Role): if interaction.guild : members_with_target_role = [member for member in interaction.guild.members if role1 in member.roles] for member in members_with_target_role: await member.add_roles(role2) await interaction.response.send_message(f'**Role {role2.mention} Be Hame Afrad Daaraye Role {role1.mention} Ezafe Shod**',ephemeral=True) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="remove-role-from-member",description="Gereftan Role Az Yek Member") @app_commands.checks.has_permissions(administrator=True) async def removerole(interaction:discord.Interaction, member: discord.Member, role: discord.Role): if interaction.guild : await member.remove_roles(role) await interaction.response.send_message(f'Role {role.mention} Az {member.mention} Gerefte Shod',ephemeral=True) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="remove-role-from-role",description="Gereftan Role2 Az Afrad Daaraye Role1") @app_commands.checks.has_permissions(administrator=True) async def remove_role_from_specific_role(interaction:discord.Interaction, role1: discord.Role, role2: discord.Role): if interaction.guild : members_with_target_role = [member for member in interaction.guild.members if role1 in member.roles] for member in members_with_target_role: await member.remove_roles(role2) await interaction.response.send_message(f'Role {role2.mention} Az Afrad Daaraye Role {role1.mention} Gerefte Shod',ephemeral=True) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="gay-sanj",description="Neshan Dadan Darsad Gay Boodan") async def gaysanj(interaction:discord.Interaction): if interaction.guild : gay = random.randint(0,100) embed = discord.Embed(title="Gay Sanj", description=f"Shoma {gay}% Gay Hastid 🏳️🌈", color=discord.Color.pink()) await interaction.response.send_message(embed=embed) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="eshgh-sanj",description="Neshan Dadan Darsad Eshgh Beyn 2 Nafar") async def eshghsanj(interaction:discord.Interaction, nafar_aval:discord.Member, nafar_dovvom:discord.Member): if interaction.guild : love = random.randint(0,100) embed = discord.Embed(title="Eshgh Sanj", description=f"Eshgh Beyn {nafar_aval.mention} VA {nafar_dovvom.mention} :**\n{love}% ❤️**", color=0xff4848) await interaction.response.send_message(embed=embed) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="esme-bache",description="Esme Bacheye 2 Nafar Chi Mishe") async def bache(interaction:discord.Interaction, nafar_aval:discord.Member, nafar_dovvom:discord.Member): if interaction.guild : with open("names.json", "r", encoding="utf-8") as json_file: data = json.load(json_file) random_name = random.choice(data)["first_name"] embed = discord.Embed(title="Esm Bache", description=f"Esm Bacheye {nafar_aval.mention} VA {nafar_dovvom.mention} :\n***{random_name}***", color=0x00f7ff) await interaction.response.send_message(embed=embed) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) @bot.tree.command(name="emoji-ba-kalame", description="Tabdil Matn Be Emoji") @app_commands.describe(text="Matn Bayad Be Sorat Horof Englisi Bashad. Shoma Mitavanid Adad 0 Ta 9 Ra Ham Estefade Konid.") async def emoji(interaction: discord.Interaction , text:str): if interaction.guild: emojis = { "a":":regional_indicator_a:", "b":":regional_indicator_b:", "c":":regional_indicator_c:", "d":":regional_indicator_d:", "e":":regional_indicator_e:", "f":":regional_indicator_f:", "g":":regional_indicator_g:", "h":":regional_indicator_h:", "i":":regional_indicator_i:", "j":":regional_indicator_j:", "k":":regional_indicator_k:", "l":":regional_indicator_l:", "m":":regional_indicator_m:", "n":":regional_indicator_n:", "o":":regional_indicator_o:", "p":":regional_indicator_p:", "q":":regional_indicator_q:", "r":":regional_indicator_r:", "s":":regional_indicator_s:", "t":":regional_indicator_t:", "u":":regional_indicator_u:", "v":":regional_indicator_v:", "w":":regional_indicator_w:", "x":":regional_indicator_x:", "y":":regional_indicator_y:", "z":":regional_indicator_z:", "A":":regional_indicator_a:", "B":":regional_indicator_b:", "C":":regional_indicator_c:", "D":":regional_indicator_d:", "E":":regional_indicator_e:", "F":":regional_indicator_f:", "G":":regional_indicator_g:", "H":":regional_indicator_h:", "I":":regional_indicator_i:", "J":":regional_indicator_j:", "K":":regional_indicator_k:", "L":":regional_indicator_l:", "M":":regional_indicator_m:", "N":":regional_indicator_n:", "O":":regional_indicator_o:", "P":":regional_indicator_p:", "Q":":regional_indicator_q:", "R":":regional_indicator_r:", "S":":regional_indicator_s:", "T":":regional_indicator_t:", "U":":regional_indicator_u:", "V":":regional_indicator_v:", "W":":regional_indicator_w:", "X":":regional_indicator_x:", "Y":":regional_indicator_y:", "Z":":regional_indicator_z:", "0":"0️⃣", "1":"1️⃣", "2":"2️⃣", "3":"3️⃣", "4":"4️⃣", "5":"5️⃣", "6":"6️⃣", "7":"7️⃣", "8":"8️⃣", "9":"9️⃣" } lis = [] for ej in text: if ej == " ": lis.append(":heavy_minus_sign:") continue try: lis.append(emojis[ej]) except: await interaction.response.send_message("**Lotfan Dar Vared Kardan Text Deghat Dashte Bashid.**" , ephemeral=True) return bot.fetch embed=discord.Embed(color=0x2b2d31) embed.add_field(name="", value=f"".join(map(str,lis)), inline=False) await interaction.response.send_message(embed=embed) else: await interaction.response.send_message("Estefade Az Command Ha Dar DM Bot Mamnoo Ast!", ephemeral=True) bot.run("MTE0NDI0NTc0ODkwOTc1NjU0OA.GIsAxo.VkXVuT8bU6jDp5m0v9lL14nFSRz0SzKBgmWdPA")