Untitled

mail@pastecode.io avatarunknown
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")