Untitled
unknown
plain_text
2 years ago
19 kB
7
Indexable
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("Ettelaati Az Fard Mored Nazar Peyda Nashod")
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")
Editor is loading...