mirror of
https://github.com/Fluffy-Bean/Lynxie.git
synced 2025-05-14 08:02:17 +00:00
Fix Image command
Mobile status
This commit is contained in:
parent
dd3b322e68
commit
7b7f30067b
3 changed files with 89 additions and 19 deletions
|
@ -2,13 +2,16 @@ import asyncio
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
from discord.gateway import DiscordWebSocket
|
||||||
|
|
||||||
from lynxie.config import DISCORD_TOKEN, LYNXIE_PREFIX
|
from lynxie.config import DISCORD_TOKEN, LYNXIE_PREFIX
|
||||||
from lynxie.commands import Help, Ping, Hello, Music, Animals, Img
|
from lynxie.commands import Help, Ping, Hello, Music, Animals, Img
|
||||||
from lynxie.database import CommandHistory, Database
|
from lynxie.database import CommandHistory, Database
|
||||||
|
from lynxie.utils import mobile_status
|
||||||
|
|
||||||
|
|
||||||
db = Database()
|
db = Database()
|
||||||
|
DiscordWebSocket.identify = mobile_status
|
||||||
lynxie = commands.Bot(
|
lynxie = commands.Bot(
|
||||||
intents=discord.Intents.all(),
|
intents=discord.Intents.all(),
|
||||||
command_prefix=LYNXIE_PREFIX,
|
command_prefix=LYNXIE_PREFIX,
|
||||||
|
@ -50,10 +53,10 @@ async def on_message_edit(before, after):
|
||||||
):
|
):
|
||||||
return
|
return
|
||||||
|
|
||||||
await before.channel.send(
|
# await before.channel.send(
|
||||||
f"@{before.author} edited their message!!!\n"
|
# f"@{before.author} edited their message!!!\n"
|
||||||
f'"{before.content}" --> "{after.content}"'
|
# f'"{before.content}" --> "{after.content}"'
|
||||||
)
|
# )
|
||||||
|
|
||||||
|
|
||||||
async def run():
|
async def run():
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import os
|
import os
|
||||||
|
import datetime
|
||||||
import requests
|
import requests
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
import datetime
|
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
|
@ -16,17 +16,30 @@ class Img(commands.Cog):
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
self._overlays = {
|
self._overlays = {
|
||||||
"bubble": Image.open(os.path.join(ASSETS_PATH, "bubble.png")).convert(
|
"bubble": Image.open(os.path.join(ASSETS_PATH, "bubble.png")),
|
||||||
"RGBA"
|
"gang": Image.open(os.path.join(ASSETS_PATH, "gang.png")),
|
||||||
),
|
|
||||||
"gang": Image.open(os.path.join(ASSETS_PATH, "gang.png")).convert("RGBA"),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@commands.command()
|
@commands.command()
|
||||||
async def overlay(self, ctx, style: str = None):
|
async def overlay(self, ctx, style: str = None):
|
||||||
start_time = datetime.datetime.now()
|
start_time = datetime.datetime.now()
|
||||||
|
|
||||||
style = style.lower().strip() if style else None
|
style = style.lower().strip() if style else None
|
||||||
|
image_attachments = None
|
||||||
|
|
||||||
|
if ctx.message.attachments:
|
||||||
|
image_attachments = ctx.message.attachments[0]
|
||||||
|
elif ctx.message.reference and ctx.message.reference.resolved.attachments:
|
||||||
|
image_attachments = ctx.message.reference.resolved.attachments[0]
|
||||||
|
elif ctx.message.embeds and ctx.message.embeds[0].image:
|
||||||
|
image_attachments = ctx.message.embeds[0].image
|
||||||
|
else:
|
||||||
|
async for message in ctx.guild.get_channel(ctx.channel.id).history(limit=10):
|
||||||
|
if message.attachments:
|
||||||
|
image_attachments = message.attachments[0]
|
||||||
|
break
|
||||||
|
elif message.embeds and message.embeds[0].image:
|
||||||
|
image_attachments = message.embeds[0].image
|
||||||
|
break
|
||||||
|
|
||||||
# Check if image should be processed
|
# Check if image should be processed
|
||||||
async with ctx.typing():
|
async with ctx.typing():
|
||||||
|
@ -38,14 +51,26 @@ class Img(commands.Cog):
|
||||||
await ctx.reply(embed=error_message(error))
|
await ctx.reply(embed=error_message(error))
|
||||||
return
|
return
|
||||||
|
|
||||||
if not ctx.message.attachments:
|
if not image_attachments:
|
||||||
error = "You need to attach an image to use this command!"
|
error = "You need to attach an image to use this command!"
|
||||||
await ctx.reply(embed=error_message(error))
|
await ctx.reply(embed=error_message(error))
|
||||||
return
|
return
|
||||||
|
|
||||||
# Extracts file extension from filename
|
# Extracts file extension from filename or url
|
||||||
if (
|
if (
|
||||||
not ctx.message.attachments[0].filename.split(".")[-1].lower()
|
image_attachments.filename
|
||||||
|
and not image_attachments.filename.split(".")[-1].lower()
|
||||||
|
in IMAGE_EXTENSIONS
|
||||||
|
):
|
||||||
|
error = (
|
||||||
|
"Unsupported file type! Supported file types are:\n"
|
||||||
|
f"`{', '.join(IMAGE_EXTENSIONS)}`"
|
||||||
|
)
|
||||||
|
await ctx.reply(embed=error_message(error))
|
||||||
|
return
|
||||||
|
elif (
|
||||||
|
image_attachments.url
|
||||||
|
and not image_attachments.url.split(".")[-1].lower()
|
||||||
in IMAGE_EXTENSIONS
|
in IMAGE_EXTENSIONS
|
||||||
):
|
):
|
||||||
error = (
|
error = (
|
||||||
|
@ -55,7 +80,10 @@ class Img(commands.Cog):
|
||||||
await ctx.reply(embed=error_message(error))
|
await ctx.reply(embed=error_message(error))
|
||||||
return
|
return
|
||||||
|
|
||||||
if ctx.message.attachments[0].size > 8_000_000:
|
if (
|
||||||
|
image_attachments.size
|
||||||
|
and image_attachments.size > 8 * 1024 * 1024
|
||||||
|
):
|
||||||
error = (
|
error = (
|
||||||
"That image is too big! Please use an image that is less than 8MB."
|
"That image is too big! Please use an image that is less than 8MB."
|
||||||
)
|
)
|
||||||
|
@ -63,16 +91,14 @@ class Img(commands.Cog):
|
||||||
return
|
return
|
||||||
|
|
||||||
if (
|
if (
|
||||||
not 0 < ctx.message.attachments[0].width <= 3500
|
not 0 < image_attachments.width <= 3500
|
||||||
or not 0 < ctx.message.attachments[0].height <= 3500
|
or not 0 < image_attachments.height <= 3500
|
||||||
):
|
):
|
||||||
error = "Image must be at least 1x1 and under 3500x3500!"
|
error = "Image must be at least 1x1 and under 3500x3500!"
|
||||||
await ctx.reply(embed=error_message(error))
|
await ctx.reply(embed=error_message(error))
|
||||||
return
|
return
|
||||||
|
|
||||||
# Process image
|
response = requests.get(image_attachments.url)
|
||||||
async with ctx.typing():
|
|
||||||
response = requests.get(ctx.message.attachments[0].url)
|
|
||||||
message_attachment = Image.open(BytesIO(response.content))
|
message_attachment = Image.open(BytesIO(response.content))
|
||||||
|
|
||||||
if message_attachment.width < message_attachment.height:
|
if message_attachment.width < message_attachment.height:
|
||||||
|
|
|
@ -1,6 +1,47 @@
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
import dotenv
|
import dotenv
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
from discord.gateway import _log
|
||||||
|
|
||||||
|
|
||||||
|
async def mobile_status(self):
|
||||||
|
payload = {
|
||||||
|
'op': self.IDENTIFY,
|
||||||
|
'd': {
|
||||||
|
'token': self.token,
|
||||||
|
'properties': {
|
||||||
|
'$os': sys.platform,
|
||||||
|
'$browser': 'Discord Android',
|
||||||
|
'$device': 'Discord Android',
|
||||||
|
'$referrer': '',
|
||||||
|
'$referring_domain': ''
|
||||||
|
},
|
||||||
|
'compress': True,
|
||||||
|
'large_threshold': 250,
|
||||||
|
'v': 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.shard_id is not None and self.shard_count is not None:
|
||||||
|
payload['d']['shard'] = [self.shard_id, self.shard_count]
|
||||||
|
|
||||||
|
state = self._connection
|
||||||
|
if state._activity is not None or state._status is not None:
|
||||||
|
payload['d']['presence'] = {
|
||||||
|
'status': state._status,
|
||||||
|
'game': state._activity,
|
||||||
|
'since': 0,
|
||||||
|
'afk': False
|
||||||
|
}
|
||||||
|
|
||||||
|
if state._intents is not None:
|
||||||
|
payload['d']['intents'] = state._intents.value
|
||||||
|
|
||||||
|
await self.call_hooks('before_identify', self.shard_id, initial=self._initial_identify)
|
||||||
|
await self.send_as_json(payload)
|
||||||
|
_log.info('Shard ID %s has sent the IDENTIFY payload.', self.shard_id)
|
||||||
|
|
||||||
|
|
||||||
def error_message(error: str) -> discord.Embed:
|
def error_message(error: str) -> discord.Embed:
|
||||||
|
|
Loading…
Add table
Reference in a new issue