initial commit
This commit is contained in:
192
main.py
Normal file
192
main.py
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
import random
|
||||||
|
import discord
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
from discord.ext import commands
|
||||||
|
from discord.utils import get
|
||||||
|
from discord import SyncWebhook
|
||||||
|
import json
|
||||||
|
|
||||||
|
admins = [00000000000000] # User IDs of Admins
|
||||||
|
guild_id = 0000000000000000 # Discord Server ID
|
||||||
|
category_id = "DMs" # Discord Channel Category Name
|
||||||
|
|
||||||
|
# global replies
|
||||||
|
|
||||||
|
# if not os.path.isfile("replies.json"):
|
||||||
|
# with open("replies.json", "w+") as g:
|
||||||
|
# json.dump({}, g, indent=1)
|
||||||
|
# g.close()
|
||||||
|
|
||||||
|
if not os.path.isfile("dm_ids.json"):
|
||||||
|
with open("dm_ids.json", "w+") as g:
|
||||||
|
json.dump({'': {'webhook_url': '', 'channel_id': ''}}, g, indent=1)
|
||||||
|
g.close()
|
||||||
|
|
||||||
|
|
||||||
|
# def file_update():
|
||||||
|
# global replies
|
||||||
|
# with open("replies.json", "r") as g:
|
||||||
|
# replies = json.load(g)
|
||||||
|
#
|
||||||
|
# # json.dump(ids, f, indent=1)
|
||||||
|
# g.close()
|
||||||
|
|
||||||
|
|
||||||
|
def attachment_list(message):
|
||||||
|
dm_attach = message.content
|
||||||
|
for x in message.attachments:
|
||||||
|
dm_attach = dm_attach + " " + x.url
|
||||||
|
return dm_attach
|
||||||
|
|
||||||
|
|
||||||
|
# file_update()
|
||||||
|
|
||||||
|
intents = discord.Intents.default()
|
||||||
|
intents.message_content = True
|
||||||
|
|
||||||
|
client = commands.Bot(command_prefix='.', description="test", intents=intents)
|
||||||
|
|
||||||
|
with open("dm_ids.json", "r") as f:
|
||||||
|
ids = json.load(f)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
|
@client.event
|
||||||
|
async def on_ready():
|
||||||
|
print(f'We have logged in as {client.user}')
|
||||||
|
|
||||||
|
|
||||||
|
@client.event
|
||||||
|
async def on_message(message):
|
||||||
|
global ids
|
||||||
|
guild = client.get_guild(guild_id)
|
||||||
|
channelcategory = get(guild.channels, name=category_id)
|
||||||
|
if message.author == client.user or message.author.bot:
|
||||||
|
return
|
||||||
|
|
||||||
|
for userid in ids:
|
||||||
|
if str(message.channel.id) == ids[userid]["channel_id"]:
|
||||||
|
user = await client.fetch_user(userid)
|
||||||
|
await user.send(attachment_list(message))
|
||||||
|
|
||||||
|
if isinstance(message.channel, discord.DMChannel):
|
||||||
|
try: # If user has already messaged the bot once
|
||||||
|
SyncWebhook.from_url(ids[str(message.author.id)]["webhook_url"]).send(attachment_list(message),
|
||||||
|
username=message.author.name,
|
||||||
|
avatar_url=message.author.avatar)
|
||||||
|
except KeyError: # If user has not messaged the bot at least once
|
||||||
|
user = await client.fetch_user(message.author.id)
|
||||||
|
await user.send("Warning: All messages sent to this bot are logged and readable by this bot's owners. By "
|
||||||
|
"continuing, you accept this. Your first message has not been logged. Your subsequent "
|
||||||
|
"messages will be logged.")
|
||||||
|
dm_channel = await guild.create_text_channel(str(message.author).replace("#", "-"), overwrites={},
|
||||||
|
category=channelcategory)
|
||||||
|
webhook = await dm_channel.create_webhook(name="user")
|
||||||
|
# SyncWebhook.from_url(webhook.url).send(attachment_list(message),
|
||||||
|
# username=message.author.name, avatar_url=message.author.avatar)
|
||||||
|
ids[str(message.author.id)] = {"webhook_url": str(webhook.url), "channel_id": str(dm_channel.id)}
|
||||||
|
with open("dm_ids.json", "w") as f:
|
||||||
|
json.dump(ids, f, indent=1)
|
||||||
|
# ids = json.load(f)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
# if not message.content.startswith("."):
|
||||||
|
# for i in replies:
|
||||||
|
# if i in message.content.strip().lower():
|
||||||
|
# await message.reply(replies[i])
|
||||||
|
# return
|
||||||
|
|
||||||
|
await client.process_commands(message)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# @client.command()
|
||||||
|
# async def upload(ctx):
|
||||||
|
# if ctx.author.id in admins:
|
||||||
|
# await ctx.reply(file=discord.File(r'replies.json'))
|
||||||
|
|
||||||
|
|
||||||
|
# @client.command()
|
||||||
|
# async def update(ctx):
|
||||||
|
# if ctx.author.id in admins:
|
||||||
|
# file_update()
|
||||||
|
# await ctx.reply("updated!")
|
||||||
|
|
||||||
|
|
||||||
|
# @client.command()
|
||||||
|
# async def add(ctx, args, args2: str = None):
|
||||||
|
# if ctx.author.id in admins:
|
||||||
|
# global replies
|
||||||
|
# if args in replies:
|
||||||
|
# await ctx.reply(args + " is already added")
|
||||||
|
# else:
|
||||||
|
# if args2 is None:
|
||||||
|
# replies[args] = args
|
||||||
|
# else:
|
||||||
|
# replies[args] = args2
|
||||||
|
# with open("replies.json", "w") as g:
|
||||||
|
# json.dump(replies, g, indent=1)
|
||||||
|
# g.close()
|
||||||
|
#
|
||||||
|
# await ctx.reply("added " + args)
|
||||||
|
# file_update()
|
||||||
|
|
||||||
|
|
||||||
|
# @client.command()
|
||||||
|
# async def remove(ctx, args):
|
||||||
|
# if ctx.author.id in admins:
|
||||||
|
# try:
|
||||||
|
# del replies[args]
|
||||||
|
# with open("replies.json", "w") as g:
|
||||||
|
# json.dump(replies, g, indent=1)
|
||||||
|
# g.close()
|
||||||
|
# await ctx.reply(f"{args} has been removed")
|
||||||
|
# file_update()
|
||||||
|
# except KeyError:
|
||||||
|
# await ctx.reply("command borke :( key no existo")
|
||||||
|
|
||||||
|
|
||||||
|
@client.group(pass_context=True)
|
||||||
|
async def send(ctx):
|
||||||
|
if ctx.author.id in admins:
|
||||||
|
if ctx.invoked_subcommand is None:
|
||||||
|
await ctx.send('Parameters: `.send (channel/dm) ID "message contents"`')
|
||||||
|
|
||||||
|
|
||||||
|
@send.group(pass_context=True)
|
||||||
|
async def channel(ctx, uid: int, message):
|
||||||
|
if ctx.author.id in admins:
|
||||||
|
channelsend = await ctx.bot.fetch_channel(uid)
|
||||||
|
await channelsend.send(message)
|
||||||
|
|
||||||
|
|
||||||
|
@channel.error
|
||||||
|
async def test_error(ctx):
|
||||||
|
await ctx.send('Parameters: `.send channel ID "message contents"`')
|
||||||
|
|
||||||
|
|
||||||
|
@send.group(pass_context=True)
|
||||||
|
async def dm(ctx, uid: int, message):
|
||||||
|
if ctx.author.id in admins:
|
||||||
|
dmuser = await ctx.bot.fetch_user(uid)
|
||||||
|
await dmuser.send(message)
|
||||||
|
|
||||||
|
|
||||||
|
@dm.error
|
||||||
|
async def test_error(ctx):
|
||||||
|
await ctx.send('Parameters: `.send dm ID "message contents"`')
|
||||||
|
|
||||||
|
|
||||||
|
@client.command()
|
||||||
|
async def react(ctx): # msg: discord.Message
|
||||||
|
if ctx.author.id in admins:
|
||||||
|
await ctx.message.add_reaction(":thumbs_up:")
|
||||||
|
|
||||||
|
|
||||||
|
# @react.error
|
||||||
|
# async def test_error(ctx):
|
||||||
|
# await ctx.send('''Parameters: `.react Channel_ID "emoji"`
|
||||||
|
# Emoji example: `<:>`''')
|
||||||
|
|
||||||
|
client.run(sys.argv[1])
|
||||||
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
discord.py
|
||||||
|
requests
|
||||||
Reference in New Issue
Block a user