I try to make the Discord bot with little success, at the moment I focus on something else

This commit is contained in:
Stefano Assenzo 2023-01-29 14:27:47 +00:00 committed by GitHub
parent 177374a894
commit c6b54bda37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 84 additions and 28 deletions

View File

@ -0,0 +1,14 @@
from discord import Option
import discord
bot = discord.Bot()
@bot.slash_command()
@discord.default_permissions(ban_members = True, administrator = True)
async def ban_user(bot, ctx, member: Option(discord.Member, description="Select a member", required=True), reason: Option(str, description="Reason", required=True)):
try:
await member.ban(reason=reason)
await ctx.respond(f'{member.mention} has been banned!')
except:
await ctx.respond(f'{member.mention} has not been banned!')

View File

@ -0,0 +1,11 @@
import discord
from discord.ext import commands
bot = discord.Bot()
@bot.slash_command()
@commands.has_permissions(manage_messages=True)
@commands.cooldown(1, 5, commands.BucketType.user)
async def clear_messages(ctx, amount : int):
await ctx.channel.purge(limit=amount+1)
await ctx.respond('Messages have been cleared!')

View File

@ -0,0 +1,11 @@
import discord
bot = discord.Bot()
@bot.slash_command()
@discord.default_permissions(kick_members = True, administrator = True)
async def kick_user(bot, ctx, member : discord.Member, *, reason=None):
try:
await member.kick(reason=reason)
await ctx.respond(f'{member.mention} has been kicked!')
except:
await ctx.respond(f'{member.mention} has not been kicked!')

View File

@ -1,54 +1,56 @@
from dotenv import load_dotenv from commands.moderation import ban, kick, clear_msg
from bson.objectid import ObjectId from discord.commands.context import ApplicationContext # Discord
from selenium.webdriver.firefox.options import Options # Selenium
from selenium.webdriver.firefox.options import Options from discord.commands import Option # Discord
from selenium.webdriver.common.by import By from discord.ext import commands
from selenium import webdriver from bson.objectid import ObjectId # MongoDB
from selenium import webdriver # Selenium
from discord.ext import tasks, commands from dotenv import load_dotenv
from discord.commands.context import ApplicationContext from selenium import webdriver # Selenium
from discord.commands import Option from discord.ext import tasks # Discord
import discord import urllib.parse # MongoDB
import pymongo import datetime # Date
import urllib.parse import discord # Discord
from selenium import webdriver import pymongo # MongoDB
import datetime import time # Time
import os import os # OS
import time
# .env
load_dotenv() # Load .env file load_dotenv() # Load .env file
DISCORD_TOKEN = os.getenv('DISCORD_TOKEN') # Discord token DISCORD_TOKEN = os.getenv('DISCORD_TOKEN') # Discord token
GENERAL_ID = os.getenv('GENERAL_ID') # Channel ID GENERAL_ID = os.getenv('GENERAL_ID') # Channel ID
PASSWORD_MONGODB = os.getenv('PASSWORD_MONGODB') # Password for MongoDB PASSWORD_MONGODB = os.getenv('PASSWORD_MONGODB') # Password for MongoDB
URL_MONGODB = os.getenv('URL_MONGODB') # URL for MongoDB URL_MONGODB = os.getenv('URL_MONGODB') # URL for MongoDB
# MongoDB
mongo_url = "mongodb+srv://elci:" + urllib.parse.quote_plus(PASSWORD_MONGODB) + URL_MONGODB # URL for MongoDB (with password) mongo_url = "mongodb+srv://elci:" + urllib.parse.quote_plus(PASSWORD_MONGODB) + URL_MONGODB # URL for MongoDB (with password)
client = pymongo.MongoClient(mongo_url) # Connect to MongoDB client = pymongo.MongoClient(mongo_url) # Connect to MongoDB
database = client["website-class"] # Database name database = client["website-class"] # Database name
# Collection school time table current collection = database["school-time-table"] # Collection school time table current
collection = database["school-time-table"]
#Date #Date
current_time = datetime.datetime.now() current_time = datetime.datetime.now() # Current time
day = str(current_time.day) day = str(current_time.day) # Day
month = str(current_time.month) month = str(current_time.month) # Month
year = str(current_time.year) year = str(current_time.year) # Year
hour = str(current_time.hour) hour = str(current_time.hour) # Hour
minute = str(current_time.minute) minute = str(current_time.minute) # Minute
long_date = day + "-" + month + "-" + year + " " + hour + ":" + minute long_date = day + "-" + month + "-" + year + " " + hour + ":" + minute # Long date with day, month, year, hour and minute
bot = discord.Bot() bot = discord.Bot()
@bot.event @bot.event
async def on_ready(): async def on_ready():
print('We have logged in as {0.user}'.format(bot)) print('We have logged in as {0.user}'.format(bot))
bot.loop.create_task(orario()) #bot.loop.create_task(orario())
# Search on MongoDB the subject and send a message on Discord if the subject is found # Search on MongoDB the subject and send a message on Discord if the subject is found
@tasks.loop(seconds=1) @tasks.loop(seconds=1)
async def orario(): async def orario():
documents = collection.find() documents = collection.find()
send_screenshot = 0 send_screenshot = 0
# Iterate through the documents
# Iterate through the documents
for document in documents: for document in documents:
for day in document['School Subject']: for day in document['School Subject']:
for i, subject in enumerate(document['School Subject'][day]): for i, subject in enumerate(document['School Subject'][day]):
@ -117,4 +119,20 @@ async def change_school_time(
{"$set": {f"School Subject.{day}.{int(hour_school)}.Subject": text}} {"$set": {f"School Subject.{day}.{int(hour_school)}.Subject": text}}
) )
@bot.slash_command()
@discord.default_permissions(ban_members = True, administrator = True)
async def ban(ctx, member: Option(discord.Member, description="Select a member", required=True), reason: Option(str, description="Reason", required=True)):
ban.ban_user(bot, ctx, member, reason)
@bot.slash_command()
@discord.default_permissions(kick_members = True, administrator = True)
async def kick(ctx, member: Option(discord.Member, description="Select a member", required=True), reason: Option(str, description="Reason", required=True)):
kick.kick_user(bot, ctx, member, reason)
@bot.slash_command(name= 'clear', description= 'Clears messages from a channel')
@commands.has_permissions(manage_messages=True, administrator=True)
@commands.cooldown(1, 5, commands.BucketType.user)
async def clear(ctx, messages: Option(int, description="Amount of messages to delete", required=True)):
clear_msg.clear_messages(ctx, amount = messages)
bot.run(DISCORD_TOKEN) bot.run(DISCORD_TOKEN)

View File

@ -1,6 +1,8 @@
from dotenv import load_dotenv
from twilio.rest import Client from twilio.rest import Client
import os import os
load_dotenv()
SID = os.getenv('SID') SID = os.getenv('SID')
AUTH_TOKEN = os.getenv('AUTHTOKEN') AUTH_TOKEN = os.getenv('AUTHTOKEN')
PHONE_NUMBER_BOT = os.getenv('PHONE_NUMBER_BOT') PHONE_NUMBER_BOT = os.getenv('PHONE_NUMBER_BOT')