#discord-bots

1 messages · Page 871 of 1

left crater
#
Traceback (most recent call last):
  File "C:\Users\nikit\PycharmProjects\discord.py\discord\ui\view.py", line 359, in _scheduled_task
    await item.callback(interaction)
  File "C:\Users\nikit\PycharmProjects\discord.py\docs\discbot.py", line 253, in nft_callback
    await interaction.response.edit_message(embed=nfts_Emb)
  File "C:\Users\nikit\PycharmProjects\discord.py\discord\interactions.py", line 621, in edit_message
    await adapter.create_interaction_response(
  File "C:\Users\nikit\PycharmProjects\discord.py\discord\webhook\async_.py", line 191, in request
    raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In embeds.0.image.url: Scheme "attachments" is not supported. Scheme must be one of ('http', 'https').```
heavy folio
#

consider subclassing help instead

scarlet aurora
#

no

#

why can't u just tell me my actual problem, not about how i set up my help command

heavy folio
#

lol your gonna suffer hardcoding help, good luck :D

scarlet aurora
slate swan
#
  1. just make member have a value of the author or the member
  2. you werent supposed to copy paste my example
  3. you arent sending the embed
heavy folio
scarlet aurora
#

i have more commands though

scarlet aurora
scarlet aurora
#

help_command=None)

slate swan
#

!e

print(f"You're {__import__('random').randint(0, 100)}% cool")
unkempt canyonBOT
#

@slate swan :white_check_mark: Your eval job has completed with return code 0.

You're 79% cool
modest plover
#

Hi, so uhh I'm making a welcome command, but I can't get the channel ID to send it to.

import disnake
from disnake.ext import commands
import random

class Welcome(commands.Cog):
	"""Fires one of many welcome messages."""
	
	def __init__(self, bot: commands.Bot):
		self.bot = bot
		
	@commands.Cog.listener()
	async def on_member_join(self, member: disnake.Member):
		"""Fires off a welcome message on user join."""
		welcomeEmbed = disnake.Embed(
			title = f"Welcome {member.name}!",
			description = "Shitter >:)"
			)
		channel = await self.bot.fetch_channel(channel_ID)
		await channel.send(embed = welcomeEmbed)

def setup(bot):
	bot.add_cog(Welcome(bot))
	print(" | Loaded Extension: Welcome")
	print(" | ")

It says channel_ID not defined

heavy folio
#

because you didnt define channel_id?

slate swan
scarlet aurora
#

@heavy folio help command is removed

heavy folio
#

you dont remove it, subclass it

final iron
#

?

modest plover
#

istg water, pep8, idk about variable names

sick birch
scarlet aurora
#

and that's what i need fixing

sick birch
#

If you want my two cents I don't like bots that send a message in some random channel when they join because more often than not that message is gonna end up being in like annoucements or something

heavy folio
#

whatever, do you have other cogs

slim ibex
#

@scarlet aurora do your cogs have a setup function

modest plover
heavy folio
#

they do

slim ibex
#

because I don't see it in your code

scarlet aurora
#
def setup(bot):
    bot.add_cog(Commands(bot))```
scarlet aurora
heavy folio
#

does it load

scarlet aurora
#
import discord
from discord.ext import commands

class status(commands.Cog):

    def __init__(self, bot):
        self.bot = bot

def setup(bot):
    bot.add_cog(status(bot))
modest plover
slate swan
#

he loads cogs on ready which is probably not the best choice

scarlet aurora
#

why is loading cogs on ready an issue?

slate swan
slim ibex
#

because its ran multiple times iirc

slate swan
#

yw

slim ibex
#

create a separate method and call that in your run method

heavy folio
#

because on_ready is not fired just once

scarlet aurora
#

so i should just create a function to load cogs, then call it once in the main file?

slate swan
#

@scarlet aurora just load them outside of any method and youll be fine

heavy folio
#

are you on 2.0 or 1.7

slate swan
#

avatar_url is an attr of the Member class?

slate swan
#

nvm

modest plover
#

Whichever way you want to do it is up to you, but just don't load em in on_ready

slim ibex
#

USING OS module isnt wacky

scarlet aurora
#

it's fixed

slate swan
#

!d discord.Guild.avatar

unkempt canyonBOT
#
NEGATORY.

No documentation found for the requested symbol.

slate swan
#

classes dont have random attrs

heavy folio
#

iirc

slim ibex
slate swan
#

!d discord.Guild.icon

unkempt canyonBOT
#

property icon: Optional[discord.asset.Asset]```
Returns the guild’s icon asset, if available.
slate swan
#

lol

scarlet aurora
#
    def get_quote():
        response = requests.get("https://zenquotes.io/api/random")
        json_data = json.loads(response.text)
        quote = json_data[0]['q'] + " - " + json_data[0]['a']
        return(quote)

    @commands.command()
    async def quote(self, ctx):
        quote = get_quote()
        await ctx.send(quote)``` why is get_quote not being defined? also i fixed my last problem thanks guys
modest plover
slim ibex
#

why _

#

just do filename lmao

modest plover
#

Idk I didn't make it

slate swan
#

it cant access the class instance

left crater
#
    async def nft_callback(self, button, interaction):
        nfts = [stuff.jpg, otherstuff.jpg]
        randnum = random.randrange(len(nfti.get_List()))
        files = discord.File(r"C:\Users\nikit\Downloads\nft\images{}.jpg".format(randnum) , filename=f"image{randnum}.jpg")
        nfts_Emb = discord.Embed(title="Free nfts")
        nfts_Emb.set_image(url=r"https://cdn.discordapp.com/attachments/images{}.jpg".format(randnum))
        await interaction.response.send_message(embed=nfts_Emb)```this just sends a blank embed
slim ibex
scarlet aurora
#

oh ofc

modest plover
slate swan
#
return response.json()

or just do it without a variable lol

scarlet aurora
#

like that?

slate swan
scarlet aurora
#

ok so remove line 3

slate swan
#

idk which line lol

scarlet aurora
#

and self, ctx is there?

slate swan
slim ibex
#

lmaio

slate swan
#

get_quote is a staticmethod

slim ibex
#

decorate it with @staticmethod first off

slate swan
#

nah

#

just make it a method in your class lol

slim ibex
#

weirdchamp

slate swan
scarlet aurora
#

thanks

slate swan
sage otter
#

list comp would of been faster

slate swan
#

it will*

slim ibex
#

[member for member in ctx.guild.members if member.bot]

heavy folio
#

is there a way for the bot to cache a channel

sage otter
#

if member.bot

slate swan
pliant gulch
#

If your just trying to get the amount of bot's in a server using sum is a fast way to get it

cedar meteor
slate swan
pliant gulch
#

Actually doing len on a list comp here might be faster, not sure

pliant gulch
# slate swan timeit😼
In [1]: import random

In [2]: class A:
   ...:     def __init__(self):
   ...:         self.bot = random.choice([False, True])

In [3]: foo = [A() for _ in range(1000)]

In [4]: def bar():
   ...:     sum(a.bot for a in foo)

In [5]: def baz():
   ...:     len([a for a in foo if a.bot])

In [6]: %timeit bar()
35.3 µs ± 1.13 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)

In [7]: %timeit baz()
20.2 µs ± 1.22 µs per loop (mean ± std. dev. of 7 runs, 100,000 loops each)

In [8]: def qux():
   ...:     len(list(filter(lambda a: a.bot, foo)))

In [9]: %timeit qux()
44.3 µs ± 2.68 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
slate swan
#

Need help writing a detailed help embed command with discord.py module

#

if anyone has any good resources or code I can use as a reference let me know

slate swan
#

just subclass the helpcommand and get creative ig lol

#

ty!

#

yw

#

Oh but is not an embed

#

the default?

#

yes

#

its a codeblock iirc so just subclass it as i said and customize it

maiden fable
#

Mhm

#

or just use bot.command deco

frozen patio
#

what is the problem?

#

and how would I fix this error?

pliant gulch
#

!e ```py
foo = (1)
for i in foo:
print(i)

unkempt canyonBOT
#

@pliant gulch :x: Your eval job has completed with return code 1.

001 | Traceback (most recent call last):
002 |   File "<string>", line 2, in <module>
003 | TypeError: 'int' object is not iterable
pliant gulch
#

!e ```py
foo = (1,)
for i in foo:
print(i)

unkempt canyonBOT
#

@pliant gulch :white_check_mark: Your eval job has completed with return code 0.

1
slim ibex
#

or you could pass options to the initializer

slim ibex
#

(nextcord.SelectOption(...),)

green bluff
#

how do i check for the number of ppl in a vc

#

so if a vc reaches 2 members they get moved

#

to a different vc

frozen patio
slim ibex
#

no thats a placeholder

frozen patio
#

OH ok

#

options = (nextcord.SelectOption(label='Hello', description='Wasssup'),) @slim ibex like this?

slim ibex
#

ye

pliant gulch
#

!d discord.VoiceChannel.members

unkempt canyonBOT
green bluff
#

uh

pliant gulch
#

You'd then use Member.move_to to move them to a new channel

#

!d discord.Member.move_to

unkempt canyonBOT
#

await move_to(channel, *, reason=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Moves a member to a new voice channel (they must be connected first).

You must have the [`move_members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.move_members "discord.Permissions.move_members") permission to use this.

This raises the same exceptions as [`edit()`](https://discordpy.readthedocs.io/en/master/api.html#discord.Member.edit "discord.Member.edit").

Changed in version 1.1: Can now pass `None` to kick a member from voice.
green bluff
#

if i have a line of code saying voice_channel = discord.utils.get(ctx.guild.channels, name="General")

#

i can do len(voice_channel.members)

#

?

pliant gulch
#

Yea to get the amount of members in the VC

green bluff
#

yep

pliant gulch
#

You compare this via to 2 via > etc

green bluff
#

yup got it

#

ty

pliant gulch
green bluff
dry kelp
#

how can i check the community channels?

quaint scaffold
unkempt canyonBOT
#

await create_voice_channel(name, *, reason=None, category=None, position=..., bitrate=..., user_limit=..., rtc_region=..., video_quality_mode=..., overwrites=...)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

This is similar to [`create_text_channel()`](https://discordpy.readthedocs.io/en/master/api.html#discord.Guild.create_text_channel "discord.Guild.create_text_channel") except makes a [`VoiceChannel`](https://discordpy.readthedocs.io/en/master/api.html#discord.VoiceChannel "discord.VoiceChannel") instead.
dry kelp
#

for example those ...

green bluff
# quaint scaffold !d discord.Guild.create_voice_channel
import discord
from discord.ext import commands
import nacl


client = commands.Bot(command_prefix="1")

@client.command(name='check', invoke_without_subcommand=True)
async def check(ctx):
  guild = ctx.guild
  voice_channel = discord.utils.get(ctx.guild.channels, name="General")


  if len(voice_channel.members) == 1:
    await guild.create_voice_channel(name="Match")
#

no errors but didnt create one

dry kelp
#

how can i check those

quaint scaffold
#

You need to provide more info here

dry kelp
#

@quaint scaffold can the bot manage the community ?

#

if yes can u send me the docs for it?

green bluff
#

should i debug it using print

dry kelp
#

i think there is

quaint scaffold
green bluff
spring flax
#

In the command deco

green bluff
#

yea i was too lazy to remove that

#

1 sec will remove that

spring flax
green bluff
#

@quaint scaffold i changed it to <2 instead of ==1 and it worked but how do i create the voice channel in a category

spring flax
#

Do you want the voice channel under a category

quaint scaffold
final iron
#

discord.Client exists

#

Variable naming matters

green bluff
#

how about prefix

quaint scaffold
#

Do not use discord.Client

green bluff
#

why and why no

final iron
slate swan
#

he's asking to change it to bot

quaint scaffold
#

Because client is far inferior, there are many things commands.Bot has that Client doesn’t.

final iron
#

Again, I never said to use Client

slate swan
#

discord.Bot does not even exist🤡

final iron
#

Lmao

slate swan
quaint scaffold
slate swan
#

Besides the only thing Bot has that I consider a "feature" over Client is the ability to register multiple listeners for a single event

slate swan
slate swan
#

Well, I meant as actual feature that you would want to use it other than the commands stuff

sick birch
#

also being able to hot-reload or modulearize your bot

quaint scaffold
#

If you ever make a proper project, you will need to use Bot.

slate swan
#

Lol no you can just... write your own code?

quaint scaffold
#

What?

sick birch
#

discord.Client feels akin to how discord.js does it

#

just dump all these events for you and let you figure it out

quaint scaffold
#

Why wouldn’t you use commands when it’s perfectly functional and very useful lol.

slate swan
#

The commands extension doesn't abstract a whole lot, everything is pretty easy to implement by yourself

quaint scaffold
#

Might as well write my OS too and build my router from scratch as well.

green bluff
#

len(voice_channel.members) gives me 0

green bluff
#

when i print it

slate swan
#

Cogs abstract little to nothing

spring flax
slate swan
green bluff
#

oh

spring flax
#

!intents

unkempt canyonBOT
#

Using intents in discord.py

Intents are a feature of Discord that tells the gateway exactly which events to send your bot. By default, discord.py has all intents enabled, except for the Members and Presences intents, which are needed for events such as on_member and to get members' statuses.

To enable one of these intents, you need to first go to the Discord developer portal, then to the bot page of your bot's application. Scroll down to the Privileged Gateway Intents section, then enable the intents that you need.

Next, in your bot you need to set the intents you want to connect with in the bot's constructor using the intents keyword argument, like this:

from discord import Intents
from discord.ext import commands

intents = Intents.default()
intents.members = True

bot = commands.Bot(command_prefix="!", intents=intents)

For more info about using intents, see the discord.py docs on intents, and for general information about them, see the Discord developer documentation on intents.

slate swan
green bluff
#

yep works now

slate swan
#

Writing an OS from scratch is hard, just build on top of something

slate swan
green bluff
#

ty

slate swan
#

not a big deal either

slate swan
pliant gulch
#

Kernels are so hard to code from scratch 😔

sick birch
pliant gulch
#

I've only gotten to emulating VGA

sick birch
pliant gulch
#

did mine in rust and c++

slate swan
#

It's called preference, as I've said. Don't force the extension onto someone, simple.

sick birch
#

you don't really need the commands extension unless you're actually making a bot, if you're making a one off thing to help you do something client is probably your best bet

slate swan
#

not the instance

slate swan
#

Gotcha

frozen patio
#

How do I fix this now?

green bluff
#

await voice_channel.members.move_to(channel=x) would this work?

slate swan
green bluff
#

it doesnt hint**

#

whats wrong with what that

frozen patio
pliant gulch
slate swan
#

!d discord.VoiceChannel.members

unkempt canyonBOT
slate swan
#

I was going to refer to an abc then I forgot lol

green bluff
#

so i need it in a list?

pliant gulch
# green bluff ?

VoiceChannel.members is a list of the members, not the member itself

#

Sooo, you'd iterate the list to get the member instances, then call move_to on them

slate swan
#

Not sure, what are you trying to do?

#

Only you would know if we're being honest here, it's your code, your intentions.

frozen patio
green bluff
#
voice_dict = []
for member in voice_channel.members:
  voice_dict.append(member)
#

would that work

pliant gulch
#

The voice_dict is kinda useless if you just want to call move_to

frozen patio
pliant gulch
#

Since you iterate and you get member

green bluff
#

so

#
for member in voice_channel.members:
  await member.move_to(channel=x)
pliant gulch
#

correct

#

assuming x is another VoiceChannel

green bluff
#

ye

pliant gulch
#

👍

slate swan
#

They execute in parallel and each call of move_to() doesn't pause the current coroutine's execution

#

But if you you're not comfortable with asyncio, just ignore what I'm saying.

pliant gulch
#

They only do this in the case there is 2 members in a voice channel, this wouldn't do much of a change

slate swan
#

Oh, sorry I must have missed that.

slate swan
#

!d discord.TextChannel.purge

unkempt canyonBOT
#

await purge(*, limit=100, check=..., before=None, after=None, around=None, oldest_first=False, bulk=True)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Purges a list of messages that meet the criteria given by the predicate `check`. If a `check` is not provided then all messages are deleted without discrimination.

You must have the [`manage_messages`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_messages "discord.Permissions.manage_messages") permission to delete messages even if they are your own. The [`read_message_history`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.read_message_history "discord.Permissions.read_message_history") permission is also needed to retrieve message history.

Examples

Deleting bot’s messages...
green bluff
#

how do i check for the voice channel to reach 2 members

#

like i dont want to do a command for it

slate swan
#

discord.py abstracts the purging process and the only thing you should probably pass to purge() is the limit and check

green bluff
#

infact i want it to move when th voice channel reaches 2 members

slate swan
#

You can also use type annotation to hint that the argument is an int like so:

@commands.command()
async def purge(ctx, count: int):
    ...
    await channel.purge(count=count)
slate swan
unkempt canyonBOT
#
Huh? No.

No documentation found for the requested symbol.

slate swan
#

wait hm

sick birch
#

confuse

pliant gulch
#

It would be on_voice_state_update

#

It's the event discord dispatches

quaint epoch
#

!d discord.on_voice_state_update

unkempt canyonBOT
#

discord.on_voice_state_update(member, before, after)```
Called when a [`Member`](https://discordpy.readthedocs.io/en/master/api.html#discord.Member "discord.Member") changes their [`VoiceState`](https://discordpy.readthedocs.io/en/master/api.html#discord.VoiceState "discord.VoiceState").

The following, but not limited to, examples illustrate when this event is called...
slate swan
#

Ah yes

quaint epoch
#

finally

slate swan
#

I'm a bit rusty, sorry

green bluff
#

so is it an event?

quaint epoch
green bluff
#

so client.listen("on_voice_state_update)

quaint epoch
#

check which circumstances the event is called on though first

green bluff
#

async def somethign

pliant gulch
quaint epoch
#

i think it would be ```@client.event
async def on_voice_state_update(member, before, after):

do shit here```

pliant gulch
# unkempt canyon

Specifically to expand more, after is of VoiceState which has a channel attribute, you'd call len on VoiceState.channel.members then check for 2

slate swan
#

on_ready signals that the cache is ready i think

pliant gulch
#

Yea, usually after all futures for guild chunking is finished

#

but discord.py's ready event just doesn't exist and is 100% library abstraction

#

the real READY event from the gateway correlates to on_connect

slate swan
#

Not sure why I thought on_voice_channel_join() was a thing

quaint epoch
#

CuNfuZeD??/??

quaint epoch
slate swan
#

I had a habit of splitting up events in my modules, maybe that was it (on_voice_state_update would dispatch different events depending on the payload)

pliant gulch
#

I just dislike how discord.py does events at all anyways 😔

#

Using string literals mean no auto suggestion from your intellisense

slate swan
#

discord.py isn't very strongly typed, if that's what you meant

#

you're calling the purge() command

pliant gulch
slate swan
pliant gulch
#

But since it's a string literal it won't auto suggest that or show me hints

slate swan
#

not how that works, you should use channel.purge()

pliant gulch
#

In the case they used enums it would auto suggest or hint that event

honest rover
#

ctx.channel in your case @slate swan

pliant gulch
#

Although typechecking with discord.py is frustrating to say the least

#

I cannot run strict typing on any discord.py codebase I've had really

slate swan
pliant gulch
#

With how discord's API is making all the models nested that would quickly become a horrendous task

#

Easily 10k line diff??? prob

#

Maybe an over-exaggeration

slate swan
pliant gulch
#

TypedDicts are hard to type narrow yea that too 😔

slate swan
#

You missed a comma after limit = 500

dry kelp
#

Is there a way to check if the guild community before was disabled and after enabled?

unkempt canyonBOT
#

A list of features that the guild has. The features that a guild can have are subject to arbitrary change by Discord.

They are currently as follows:

slate swan
#
if 'COMMUNITY' in guild.features:
    ...
#

!d discord.on_guild_update

unkempt canyonBOT
#

discord.on_guild_update(before, after)```
Called when a [`Guild`](https://discordpy.readthedocs.io/en/master/api.html#discord.Guild "discord.Guild") updates, for example:

• Changed name

• Changed AFK channel

• Changed AFK timeout

• etc...
slate swan
#

@dry kelp You can also listen to this event to get notified when a guild is updated

dry kelp
#

dw i got it

slate swan
#

Are there any exceptions being thrown?

#

Are there any errors? If you haven't overridden the default error handling, it should appear in stdout

#

If you're running this in your terminal with python filename.py then it should be in the terminal

#

Do you have Manage Messages permissions?

#

Can you show full code?

#

Just doing true or false is time consuming

boreal ravine
#

do you have an on_message event?

slate swan
#

Why waste time with more questions anyway

#

!paste

unkempt canyonBOT
#

Pasting large amounts of code

If your code is too long to fit in a codeblock in discord, you can paste your code here:
https://paste.pythondiscord.com/

After pasting your code, save it by clicking the floppy disk icon in the top right, or by typing ctrl + S. After doing that, the URL should change. Copy the URL and post it here so others can see it.

quick gust
#

there u go, your error handler is eating up the rest of the errors u don't handle

boreal ravine
#

Remove the error handler for the command, and try again

#

and please don't make a custom error handler for a command, you can simply handle the errors inside of an on_command_erroror the command

#

It's limit

quick gust
#

your limit will be the number of messages that'll be purged iirc

boreal ravine
#

!d discord.TextChannel.purge rtd

unkempt canyonBOT
#

await purge(*, limit=100, check=..., before=None, after=None, around=None, oldest_first=False, bulk=True)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Purges a list of messages that meet the criteria given by the predicate `check`. If a `check` is not provided then all messages are deleted without discrimination.

You must have the [`manage_messages`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_messages "discord.Permissions.manage_messages") permission to delete messages even if they are your own. The [`read_message_history`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.read_message_history "discord.Permissions.read_message_history") permission is also needed to retrieve message history.

Examples

Deleting bot’s messages...
boreal ravine
#

Read the error

#

read what I sent

boreal ravine
#

it's limit, not count

#

yes

#

!d discord.TextChannel.send it takes a delete_after kwarg, just put it inside your send and set it to 5 seconds or something

unkempt canyonBOT
#

await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Sends a message to the destination with the content given.

The content must be a type that can convert to a string through `str(content)`. If the content is set to `None` (the default), then the `embed` parameter must be provided.

To upload a single file, the `file` parameter should be used with a single [`File`](https://discordpy.readthedocs.io/en/master/api.html#discord.File "discord.File") object. To upload multiple files, the `files` parameter should be used with a [`list`](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.9)") of [`File`](https://discordpy.readthedocs.io/en/master/api.html#discord.File "discord.File") objects. **Specifying both parameters will lead to an exception**.

To upload a single embed, the `embed` parameter should be used with a single [`Embed`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed "discord.Embed") object. To upload multiple embeds, the `embeds` parameter should be used with a [`list`](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.9)") of [`Embed`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed "discord.Embed") objects. **Specifying both parameters will lead to an exception**.
dry kelp
#

@slate swan

slate swan
#

hi

dry kelp
#

how can i check if the guild community is being disabled

slate swan
#

Just check if 'COMMUNITY' is in the old features and not present in the new ones

#

It's just an array of strings, so you can easily check if a value isn't there like

if x not in []: ...
dry kelp
#

Like if 'COMMUNITY' in before.features and not after.features

#

@slate swan

slate swan
#
if 'COMMUNITY' in before.features and 'COMMUNITY' not in after.features: ...
slate swan
#

Unless that is your intention 🤷

dry kelp
#

I think I should use not in after.features

#

AT the end

frozen patio
#

thats why too complicated

slate swan
#

no?

frozen patio
#

mine is only 3 lines and works

#

4 lines*

slate swan
slate swan
#

^

slate swan
frozen patio
#
@commands.has_permissions(manage_messages=True)
async def purge(ctx, amount):
    await ctx.channel.purge(limit=int(amount)+1)
#

works

#

yeah but I have a logs channel setup for what is purged

#

so i dont really need a confirmation message

#

just check the logs

slate swan
slate swan
slate swan
frozen patio
#

do embed=embed

slate swan
slate swan
frozen patio
slate swan
frozen patio
#

yeah i didnt know that

slate swan
slate swan
frozen patio
slate swan
#

why do you have kwargs set to None just dont add the kwargs lmao

#

limit=limit will work just fine

#

others arent needed since they are the default values added explicitly

#

and follow pep 8 lol

#

your type hint

#

uhh i.d.k. pepe_cri

#

it should be

_type: int
#

🗿

slate swan
#

limit : int

slate swan
slate swan
slate swan
slate swan
#

im just saying that youre not following pep8 thats all

slate swan
#

use dummy prints and see where the error is

#

can your bot even delete msgs

#

24, let me count

quick gust
quick gust
slate swan
#

ill probably raise a forbidden so idk why i asked

quick gust
#

tbh i have no clue why it doesnt work

slate swan
#

try running the command once again, maybe there was an issue with the api

#

bro what?

quick gust
#

lmao

#

wow

slate swan
#

wait, I was kidding, did it really work? WTFStare

#

dog3 well

#

its probably failing to delete after

alpine furnace
#

Np

slate swan
#

it probably was failing at first as in docs it says if it fails an exception is never raised

quick gust
#

if the deletion fails

the message doesn't send

#

idk lmao

slate swan
vast gale
#

tldr if you provide to delete_after the exception won't be raised

#

including if you provide to the wait or w/e the name is on message.delete()

quick gust
# slate swan ?

its silently ignored if it fails to DELETE, it should still send the message atleast

vast gale
#

which actually means you can suppress the exception by using wait=0

slate swan
quick gust
#

yeah i know

slate swan
#

thats weird tho

quick gust
#

yes

slate swan
#

if it fails how would it stop the msg from sending?

quick gust
#

maybe he misspelled the command

#

lol

vast gale
#

that's very plausible

slate swan
#

seems like he didnt

slate swan
quick gust
quick gust
slate swan
maiden fable
#

Imagine making bots

slate swan
#

💀

slate swan
maiden fable
#

Indeed

#

Rip the channel do be dry 😔

slate swan
#

im hungrylemon_glass

sick birch
maiden fable
sick birch
#

you like to start your day off by helping people?

maiden fable
sick birch
#

that's great to hear but unfortunately i don't have all that much time in the morning

maiden fable
#

Cz I over slept anyways if I go down rn, I'm gonna be taunted by my parents lemon_pensive

sick birch
#

That feeling when you sleep for 15 hours and you don't want people to make fun of you

#

I feel you

maiden fable
#

Indeed

boreal ravine
#

!rule 7

unkempt canyonBOT
#

7. Keep discussions relevant to the channel topic. Each channel's description tells you the topic.

maiden fable
#

Okay

sick birch
#

Fair point but kind of just waiting for someone to ask a question at this point

#

elevator music

maiden fable
#

Oh someone here 👀

sick birch
#

please ask question

maiden fable
#

Yes

sick birch
#

i think we scared them away

#

☹️

maiden fable
#

I'll just go from here lemon_pensive

slate swan
stray carbon
maiden fable
stray carbon
#

then in which version?

slate swan
stray carbon
#

discord_components?

slate swan
#

recommended to use dpy 2.0 or its forks

stray carbon
#

Ohk

slate swan
maiden fable
#

Either use dpy 2.0, a fork or third party modules like disnake (now depreciated in favor of disnake)

alpine furnace
#

Why are there so many disnake shills here

final iron
alpine furnace
#

Or maybe it’s just you two but you’re all super active

maiden fable
stray carbon
final iron
#

There's a difference between being a shill and just recommending the best fork

alpine furnace
#

What makes it the best

maiden fable
#

Also u should seriously update to 3.9 since most of the modules don't support 3.8 anymore

stray carbon
#

Im win 7 user DA_notstonks

maiden fable
#

Yea, 2.0 works with 3.8.6 @stray carbon

maiden fable
final iron
# alpine furnace What makes it the best

Better feature implementation, things are supported faster, devs actually know what they're doing, code actually goes through multiple stages of testing before it gets released and a few others I'm missing

stray carbon
#

I aint able to install it tho

alpine furnace
#

Yeah, 3.8 is the minimum version

maiden fable
alpine furnace
#

You need to install through GitHub either the zip archive or a git tag

stray carbon
maiden fable
# stray carbon 3.9 requires win 8.1+

Ouch, well then u should think of a way to upgrade since the next version bump gonna remove support for 3.8 and most of the modules don't support 3.8 or have very less support

final iron
stray carbon
#

:/

maiden fable
stray carbon
#

oh

maiden fable
#

Run this command (:
The 2.0 update wasn't published on pypi

stray carbon
#

Ic,tysm

maiden fable
#

It's cool

alpine furnace
maiden fable
#

I can sense a huge disagreement starting 👀

final iron
alpine furnace
#

Huh

#

So they don’t know what they’re doing

final iron
#

Yes

alpine furnace
#

They as in, disnake developers

maiden fable
#

@final iron u know, u shouldn't really target other forks, whether directly or indirectly. The only reason I advice to use disnake is cz they release features faster that's it (:

alpine furnace
#

Or who

final iron
alpine furnace
#

Yeah they’re kind of amateur

#

It’s cool to see a test bot in disnake though, and I’m assuming they have some kind of automatic testing in their test guilds

#

Or slaves

#

Anyway

slate swan
#

I get an error
Ffmpeg not found

#

How to fix bro

maiden fable
#

Lemme start making a dpy wrapper. Would be fun to see all your comments on my wrapper, like this is the worst code I have ever seen till now. At least u will start to respect pycord devs then 👀

alpine furnace
final iron
alpine furnace
#

What is this

maiden fable
slate swan
final iron
#

Why do they have dlls

#

🤨

slate swan
maiden fable
maiden fable
alpine furnace
maiden fable
#

There, edited the message (;

slate swan
final iron
#

I wasn't blaming them for having dlls anyway

maiden fable
slate swan
#

The top or bottom one

maiden fable
#

Well the bot won't work on replit anyways

slate swan
#

I made a bot with the same code it worked

#

I just copy paste the sc and replace token

maiden fable
#

It's gonna get ratelimited

digital crest
#

File "D:\Coding\Discord BOT\BOT.py", line 59, in <module>
client.command()
AttributeError: 'Client' object has no attribute 'command'

maiden fable
digital crest
#

ok

slate swan
#

So wht is the solution

maiden fable
#

Don't use replit

#

Cirno here 👀

visual island
#

I once tried to play something on vc with replit and worked great

#

maybe try to install ffmpeg from package manager?

maiden fable
#

Huh, ffmpeg works on replit?

slate swan
#

they even have a music bot template

maiden fable
#

Idk bout that, the last time I used replit to host a bot was in 2020

slate swan
maiden fable
#

I hardly knew anything about discord bots back then ¯_(ツ)_/¯

slate swan
maiden fable
#

Docs for me

#

Never used fcc

slate swan
maiden fable
#

Cool

slate swan
#

but it was fun

maiden fable
#

Cool

boreal ravine
maiden fable
#

I smell something starting lemon_pensive

final iron
boreal ravine
#

Believing rumors is bad idea

final iron
#

🤷‍♂️

slate swan
#

Then i copy paste the code

#

Then it says ffmpeg not found

slate swan
#

Yah

#

lemme see

boreal ravine
slate swan
#

It wont work

boreal ravine
#

how did you install it?

slate swan
#

In chrome

slate swan
#

I dont use urls

torn sail
#

I would prefer the title url

slate swan
#

same title is clean

boreal ravine
#

ah yes xenon

alpine furnace
#

Xenon is one of the noble gasses that can actually form stable compounds though.. wonder what that means for your bot

boreal ravine
maiden fable
#

sure it is 👀

maiden fable
alpine furnace
#

No, bad

maiden fable
#

s.m.h.

#

why tho

#

Oh lmao

boreal ravine
#

rule 7

maiden fable
#

Ok

slate swan
digital crest
#

AttributeError: 'Client' object has no attribute 'command'
client.command is making this happen since im using discord.client but i dont want to switch to commands.Bot
any way around it?

slate swan
#

Client doesnt have commands

#

and why not use the subclass aka the Bot class its all the same? but better

maiden fable
#

Hmm

boreal ravine
#

why are you even making commands if you're using Client

digital crest
#

Idk lol

maiden fable
#

@digital crest this is not possible. you instead gotta use commands.Bot to make commands

digital crest
#

Rip k

hazy oxide
#

Anyone know how to edit a message in nextcord?

maiden fable
#

!d nextcord.Message.edit

unkempt canyonBOT
#

await edit(content=..., embed=..., embeds=..., attachments=..., suppress=..., delete_after=None, allowed_mentions=..., view=..., file=..., files=..., append_files=...)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Edits the message.

The content must be able to be transformed into a string via `str(content)`.

Changed in version 1.3: The `suppress` keyword-only parameter was added.
maiden fable
#

just do msg = await ctx.send(...) and then do await msg.edit(...)

hazy oxide
#

The interaction

#

On slash command

maiden fable
#

Hmm idk how nextcord implements their slash commands, sorry

hazy oxide
#

Owh okay

maiden fable
#

What the :stare:

boreal ravine
unkempt canyonBOT
#

slash_command(name=..., description=..., guild_ids=..., default_permission=..., force_global=False)```
Creates a Slash application command from the decorated function.
boreal ravine
#

read it's docs maybe

maiden fable
#

!d nextcord.Interaction.original_message

unkempt canyonBOT
#

await original_message()```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Fetches the original interaction response message associated with the interaction.

If the interaction response was [`InteractionResponse.send_message()`](https://nextcord.readthedocs.io/en/latest/api.html#nextcord.InteractionResponse.send_message "nextcord.InteractionResponse.send_message") then this would return the message that was sent using that response. Otherwise, this would return the message that triggered the interaction.

Repeated calls to this will return a cached value.
maiden fable
#

There

hazy oxide
#

Ok ty

maiden fable
#
msg = await interaction.original_message()
await msg.edit(...)
viral wolf
#

I don't know quite how to phrase my question but how do you test your bot's features without actually releasing them?

boreal ravine
#

what

#

just

#

don't release it?

slate swan
boreal ravine
#

no

slate swan
maiden fable
#

!d nextcord.Interaction.edit_original_message

unkempt canyonBOT
#

await edit_original_message(*, content=..., embeds=..., embed=..., file=..., files=..., view=..., allowed_mentions=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Edits the original interaction response message.

This is a lower level interface to [`InteractionMessage.edit()`](https://nextcord.readthedocs.io/en/latest/api.html#nextcord.InteractionMessage.edit "nextcord.InteractionMessage.edit") in case you do not want to fetch the message and save an HTTP request.

This method is also the only way to edit the original message if the message sent was ephemeral.
viral wolf
maiden fable
#

@hazy oxide use this lol

slate swan
#

nextcord awkward1

boreal ravine
maiden fable
hazy oxide
slate swan
#

help , i think it is because the servers 2fa

hazy oxide
#

oh

slate swan
#

because when its off it has no problems

hazy oxide
slate swan
maiden fable
hazy oxide
#

okay thank you

boreal ravine
maiden fable
#

My internet do be throttling 😔

maiden fable
slate swan
slate swan
slate swan
#

Its a botthinkmon

maiden fable
slate swan
slate swan
boreal ravine
slate swan
#

@boreal ravine

boreal ravine
#

i mean you need 2fa

slate swan
boreal ravine
#

are you sure?

slate swan
#

yes

#

its the bot not me

boreal ravine
slate swan
boreal ravine
#

hm

#

well

#

idk

maiden fable
#

Weird

slate swan
#

@bot.command()
async def say(ctx, *, args):
  say = [851997270597828618]
  if ctx.author.id in say:
    await ctx.send(args)
    await ctx.message.delete()
  else:
    return ```
#

i dont think the code is wrong

livid jacinth
#

How can i stop that the bot spam the message into the channel?
I tryed that the bot send a message to an channel if a specific person comes online. But if the person comes online the bot spam the message permanently.

@bot.event
async def on_member_update(before, after):
    if str(after.status) == "online" and after.id == MYID:
        channel = bot.get_channel (941209391917568000) 
        await channel.send("idk")
        pass
livid jacinth
#

No an py on_member_update

torn sail
#

But do u have a on_message event anywhere else in ur code?

livid jacinth
#

Yes

maiden fable
#

How does that effect on_member_update event lol

torn sail
#

He says it spams the message permanently so maybe it’s responding to its own message

maiden fable
#

ah that way

#

yea, its possible, if they have an event deco, not a listen one

slate swan
#
class GameButton(Button):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    async def callback(self, interaction):
        await interaction.response.send_message("Hi bro", ephemeral=True)
        if interaction.user == p1 and self.pc1:
            try:
                await interaction.response.send_message(self.chosen, ephemeral=True)
            except:
                await interaction.followup.send_message(self.chosen, ephemeral=True)
        elif interaction.user == p1:
            self.c1 = str(self.custom_id)[0]
            self.pc1 = True
        elif interaction.user == p2:
            self.c2 = str(self.custom_id)[0]
            self.pc2 = False
    

class RockButton(GameButton):
    def __init__(self):
        super().__init__(label="Rock", style=discord.ButtonStyle.blurple, custom_id="rock", callback=super().callback)

class PaperButton(GameButton):
    def __init__(self):
        super().__init__(label="Paper", style=discord.ButtonStyle.blurple, custom_id="paper", callback=super().callback)

class ScissorsButton(GameButton):
    def __init__(self):
        super().__init__(label="Scissors", style=discord.ButtonStyle.blurple, custom_id="scissors", callback=super().callback)```
#

callback aint getting trigerred

mellow barn
slate swan
slate swan
# mellow barn you need to add buttons to ui.View object
class MyView(View):

    def __init__(self):
        super().__init__()
        self.pc1 = False
        self.pc2 = False
        self.c1 = '/'
        self.c2 = '/'
        self.chosen = "You have already chosen"
        self.add_item(RockButton())
        self.add_item(PaperButton())
        self.add_item(ScissorsButton())

    async def interaction_check(self, interaction) -> bool:
        if interaction.user not in plist:
            try:
                await interaction.response.send_message("You are not playing this", ephemeral=True)
            except:
                await interaction.followup.send_message("You are not playing this", ephemeral=True)
            return False
        else:
            return True```
mellow barn
# slate swan ```py class MyView(View): def __init__(self): super().__init__() ...
async def callback(self, interaction, choice, custom_id):
  await interaction.response.send_message("Hi bro", ephemeral=True)
  if interaction.user == p1 and self.pc1:
    try:
      await interaction.response.send_message(choice, ephemeral=True)
    except:
      await interaction.followup.send_message(choice, ephemeral=True)
  elif interaction.user == p1:
    self.c1 = str(custom_id)[0]
    self.pc1 = True
  elif interaction.user == p2:
    self.c2 = str(custom_id)[0]
    self.pc2 = False

class Game(ui.View):
  def __init__(self):
    super().__init__()
    self.choice = None
    self.pc1 = False
    self.pc2 = False
    self.c1 = '/'
    self.c2 = '/'
  
  async def interaction_check(self, interaction) -> bool:
    if interaction.user not in plist:
      try:
        await interaction.response.send_message("You are not playing this", ephemeral=True)
      except:
        await interaction.followup.send_message("You are not playing this", ephemeral=True)
      return False
    else:
      return True

  @ui.button(label="Rock", style=discord.ButtonStyle.blurple, custom_id="rock")
  async def confirm(self, button: ui.Button, interaction: Interaction):
    self.choice = "Rock"
    game_action(self, interaction, self.choice, "rock")

  @ui.button(label="Paper", style=discord.ButtonStyle.blurple, custom_id="paper")
  async def confirm(self, button: ui.Button, interaction: Interaction):
    self.choice = "Paper"
    game_action(self, interaction, self.choice, "paper")
  
  @ui.button(label="Scissors", style=discord.ButtonStyle.blurple, custom_id="scissors")
  async def cancel(self, button: ui.Button, interaction: Interaction):
    self.choice = "Scissors"
    game_action(self, interaction, self.choice, "scissors")

try doing it like this

#
view = Game()
await ctx.send(..., view=view)```
slate swan
#

alr lemme go through it

mellow barn
#

and then just py await view.wait() for choice

mellow barn
slate swan
kind cargo
#

!paste

unkempt canyonBOT
#

Pasting large amounts of code

If your code is too long to fit in a codeblock in discord, you can paste your code here:
https://paste.pythondiscord.com/

After pasting your code, save it by clicking the floppy disk icon in the top right, or by typing ctrl + S. After doing that, the URL should change. Copy the URL and post it here so others can see it.

kind cargo
mellow barn
#

i'll paraphrase

#

it can have that function because it's a class, but it won't be used by discord.py (or any other lib) itself

slate swan
#

i got it

#

thnx'

slate swan
mellow barn
#

lemme test it, give me a minute

slate swan
#

👍

alpine furnace
#

Coloured functions dude. Cringe

leaden chasm
#

help anyone.

cold sonnet
#

deindent it

#

make the function be outside of the class

leaden chasm
#

alr

#

ty

#

worked*

cold sonnet
#

and your command outside of the init

#

but in the class

leaden chasm
#

okay

cold sonnet
#

then it should work perfectly

leaden chasm
#

yup works

slate swan
#

Guys can anyone give me code of broadcast msg

slate swan
maiden fable
slate swan
#

what exactly does member.premium_since return?
something like this? 2021-05-24T01:35:41.336000+00:00

maiden fable
#

it returns a datetime object

slate swan
#

premium_since refers to nitro?

boreal ravine
#

yes

maiden fable
slate swan
#

oof

#

refers to a server boost origin date

#

?

#

that....huh?

#

the day you started boosting "this server"

maiden fable
slate swan
#

oh

maiden fable
#

!d discord.Member.premium_since

unkempt canyonBOT
#

An aware datetime object that specifies the date and time in UTC when the member used their “Nitro boost” on the guild, if available. This could be None.

slate swan
#

nitro boost

#

see

maiden fable
#

Oh nvm

#

Hmm what was for nitro then pithink

slate swan
#

there isnt one

manic wing
#

^

slate swan
#

lol, thats not a dpy attr

maiden fable
#

O

slate swan
#

yes, sad

manic wing
#

i think its in flags tho

#

possibly

maiden fable
#

I am starting to forget what attrs are for 😔

slate swan
#

but flags are faulty in a way

#

i dont rely on them personally

#

id rather hardcode my way through a calling

#

its stupid why bots cant access user profiles

#

wait, how do you get the badges of a user?

manic wing
manic wing
unkempt canyonBOT
#

property public_flags```
Equivalent to [`User.public_flags`](https://discordpy.readthedocs.io/en/master/api.html#discord.User.public_flags "discord.User.public_flags")
maiden fable
unkempt canyonBOT
#

class discord.PublicUserFlags```
Wraps up the Discord User Public flags.

x == y Checks if two PublicUserFlags are equal.

x != y Checks if two PublicUserFlags are not equal.

hash(x) Return the flag’s hash.

iter(x) Returns an iterator of `(name, value)` pairs. This allows it to be, for example, constructed as a dict or a list of pairs. Note that aliases are not shown.

New in version 1.4.
slate swan
#

okay am forgetting stuff

#

see, what i did for my bot

#

no

manic wing
maiden fable
#

then try to get some sleep

slate swan
#

i just gathered all the badges a user has with if statements

maiden fable
slate swan
#

then sends the badges as emotes of the actual badge

manic wing
maiden fable
#

!source userinfo

unkempt canyonBOT
#
Bad argument

Unable to convert 'userinfo' to valid command, tag, or Cog.

maiden fable
#

!source info smh

unkempt canyonBOT
#
Bad argument

Unable to convert 'info smh' to valid command, tag, or Cog.

maiden fable
#

Bruh :stare:

boreal ravine
#

!source u

unkempt canyonBOT
#
Command: user

Returns info about a user.

Source Code
maiden fable
#

!source info

unkempt canyonBOT
#
Bad argument

Unable to convert 'info' to valid command, tag, or Cog.

slate swan
manic wing
#

hunter spamming

maiden fable
#

Ok I suck

slate swan
maiden fable
slate swan
#
'{"user": {"id": "431427182926102528", "username": "tame", "avatar": "47eecdedbde0240cbe8db6056e881b20", "discriminator": "4444", "public_flags": 256, "flags": 256, "banner": "dc2516de42402d9c3b4a1215a9a8ce7f", "banner_color": "#b5d8cb", "accent_color": 11917515, "bio": "\\n\\n\\u2605 \\u2605 \\u2605\\u2606 \\u2606"}, "connected_accounts": [], "premium_since": "2021-06-25T09:39:51.096537+00:00", "premium_guild_since": "2021-05-24T01:35:41.336000+00:00", "guild_member": {"roles": ["917284127701598250", "917284786471596035"], "nick": null, "avatar": null, "premium_since": null, "joined_at": "2021-12-08T01:55:06.914000+00:00", "is_pending": false, "pending": false, "communication_disabled_until": null, "user": {"id": "431427182926102528", "username": "tame", "avatar": "47eecdedbde0240cbe8db6056e881b20", "discriminator": "4444", "public_flags": 256}, "bio": "", "banner": null, "mute": false, "deaf": false}}'``` so much user data in the profile api, its honestly a huge shame that bots cant access this endpoint 😔
boreal ravine
maiden fable
boreal ravine
#

they have been here for a long time

maiden fable
maiden fable
slate swan
#

nope, they cant

maiden fable
slate swan
#

i tried a bot token and a user token (may have bent the rules a bit there for that one, it was for experimental purposes)

boreal ravine
#

how the fuck did you get the users bio

slate swan
#

bot tokens raise status code 20001, users raise 200

slate swan
maiden fable
slate swan
#

not my own

#

but, yes. a user token

cloud dawn
slate swan
#

anyways

#

bots should be able to access that

maiden fable
#

what?

slate swan
#

theres so much rich information that even i never knew could be accessed

maiden fable
#

the bots don't have access to the bio BTW

slate swan
#

yeah, i know. but they should, not just bio but the entire profile endpoint

maiden fable
#

Lemme give u a bot token, u can try it yourself

slate swan
#

ive already tested it with my own bot token

cloud dawn
slate swan
#

it raised a 20001 (unavailable)

maiden fable
#

Told ya then

#

the bots cannot access it 😔

boreal ravine
maiden fable
#

iirc it was allowed in former API version(s), when dpy had a discord.Profile class

slate swan
boreal ravine
#

privacy?

maiden fable
slate swan
maiden fable
#

Alts exist. Just make a temp account or use a temp mail and use its token until discord detects, but then it is against ToS so I better not continue this

#

But yea, I would love to continue this convo in DMs if u want

alpine furnace
#

Discord’s self bot prevention is garbage every update they push is bypassed in 1 second

maiden fable
#

Indeed

slate swan
maiden fable
cloud dawn
boreal ravine
slate swan
maiden fable
unkempt canyonBOT
#
Not gonna happen.

No documentation found for the requested symbol.

maiden fable
#

Breh wtf lemme get it

#

!d discord.TextChannel.is_news

unkempt canyonBOT
#

is_news()```
[`bool`](https://docs.python.org/3/library/functions.html#bool "(in Python v3.9)"): Checks if the channel is a news channel.
maiden fable
#

!d discord.TextChannel.edit has a news kwarg

unkempt canyonBOT
#

await edit(*, reason=None, **options)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Edits the channel.

You must have the [`manage_channels`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_channels "discord.Permissions.manage_channels") permission to use this.

Changed in version 1.3: The `overwrites` keyword-only parameter was added.

Changed in version 1.4: The `type` keyword-only parameter was added.

Changed in version 2.0: Edits are no longer in-place, the newly edited channel is returned instead.
visual island
maiden fable
#

Yea that

#

I don't code discord bots anyways, I forgot half the things

visual island
#

me either whattt

maiden fable
#

Rip no reaction perms 😔

slate swan
maiden fable
spring flax
placid skiff
#

well once you learned the package if you don't have any project you will not continue to use it anymore of course

maiden fable
spring flax
#

Its verified right?

maiden fable
#

Yea

slate swan
maiden fable
#

👀

#

I haven't even checked the top.gg page since an year or smth now

spring flax
velvet tinsel
spring flax
#

The bots been made a year ago?

slate swan
maiden fable
velvet tinsel
slate swan
maiden fable
#

She do be sleep drunk 👀

slate swan
velvet tinsel
maiden fable
spring flax
#

I wanted to get a bot verified but it's probably too late

slate swan
slate swan
#

yes

spring flax
#

What do you mean why

maiden fable
#

It was verified on 24 Dec 2021

#

And, uhhh, I think it's been less than a year

velvet tinsel
#

can’t you verify it whenever you like

maiden fable
#

Yea, my bad. Was confused

maiden fable
velvet tinsel
maiden fable
# slate swan yes

Then sleep and then feel silly after reading yr messages when u wake up 👀

spring flax
slate swan
spring flax
#

Hunter

#

Do you think i should try and grow a bot

maiden fable
velvet tinsel
#

Yes go to sleep

velvet tinsel
#

Not that hard

maiden fable
maiden fable
slate swan
#

....funny

maiden fable
slate swan
#

!ot

unkempt canyonBOT
spring flax
spring flax
#

And how did you grow your bot

slate swan
spring flax
#

Whats that

maiden fable
slate swan
#

or good and accurate automod

maiden fable
#

Mod bots are old tbh. They are boring to make 😔

slate swan
# spring flax Whats that

like it creates channels and roles and permissions when setting up a server with premade templates

slate swan
spring flax
#

Oh...i see that's interesting

maiden fable
maiden fable
#

There are numerous bots for the same thing 😔

slate swan
#

^

#

and people are making their own everyday

maiden fable
#

Indeed

spring flax
#

Yeah nvm there's no point trying to verify for me

maiden fable
#

The bot making scene was fun when I was new to it. There weren't that many bots back then

velvet tinsel
#

That’s why I decided to leave discord bots

maiden fable
spring flax
#

How many servers is jarvide in? @manic wing

maiden fable
#

Had to wait for like 2-3 months for a final response

spring flax
maiden fable
#

Indeed

red sundial
#

what exactly is jarvide, i've seen the repo and i saw its a ide, its ai and its like jarvis that will understand nlp, but then i saw the prs they were adding gif commands

#

really confusing

maiden fable
#

Lmaoo

#

Idfk what's that tbh. I am in the server but meh, I haven't even messaged there since ages

spring flax
#

Apparently i was invited to work on development but haven't been assigned anything

velvet tinsel
#

The fuck

spring flax
velvet tinsel
#

Yeah I know

#

I was developing it

red sundial
#

oh

velvet tinsel
red sundial
#

what is it exactly

velvet tinsel
#

It was also meant to be an IDE and shit

maiden fable
#

Mhm

red sundial
#

now its just a normal dc bot?

spring flax
#

Wait its stopped?

maiden fable
#

It's nothing now

velvet tinsel
#

yeah it died

red sundial
#

oh

#

i thought development was still active

maiden fable
#

No

velvet tinsel
#

Not anymore

red sundial
#

they should mention that in the readme 😭

maiden fable
#

Lmaoo

velvet tinsel
#

Idk how it died but now we talk about the Ukraine crisis in there

red sundial
#

i was looking at how they did the ide shit

#

i was like this is cool

spring flax
#

Oh that's sad

velvet tinsel
velvet tinsel
#

Cool

red sundial
#

i was browsing trying to find projects to contribute to

maiden fable
#

Everything is boring except developing Box It Up lemon_pensive

velvet tinsel
spring flax
#

What's box it up

#

Also hunter you stopped adding any features to hunai?

maiden fable
#

Nothing, just a silly little game I'm making

maiden fable
spring flax
#

Can you send the github link?