#discord-bots

1 messages · Page 976 of 1

mental oar
#

I see you mentioned neural networks… did you know that IBM offers neural networks? Check out ibm.com/neural!!

sick birch
#

Neural networks are my bane

muted quarry
#

@sick birch Do we have to install discord Ui in terminal

#

and import it

#

for select menu

sick birch
#

No, installing 2.0 will do

granite parcel
#

How to do this?

sick birch
#

The timestamps?

muted quarry
granite parcel
#

Yes

sick birch
#

<t:1649907236:F> like so?

granite parcel
#

Yep

sick birch
#

<t:UNIX_TIMESTAMP:FORMAT_LETTER>

#

For example: <t:1649907236:F> -> <t:1649907236:F>

muted quarry
#

Joined,value= user.joined_at
Registered,value= user.created_at

@sick birch I did this and it gives the time format in a messy way

granite parcel
#

Yes i also have did this

sick birch
#

Right, that gives you the datetime.datetime object

#

You can get the UNIX timestamp by using datetime.datetime.timestamp() object

#

Or, in your case, user.joined_at.timestamp()

#

!d discord.utils.format_dt

unkempt canyonBOT
#

discord.utils.format_dt(dt, /, style=None)```
A helper function to format a [`datetime.datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime "(in Python v3.10)") for presentation within Discord.

This allows for a locale-independent way of presenting data using Discord specific Markdown...
muted quarry
sick birch
#

Make sure to surround it properly with <t::F>

granite parcel
#

Ohk

sick birch
#

Or you can use the util methods I linked earlier, it can help

muted quarry
slate swan
#

weird error in my terminal that won't allow my bot to boot, any ideas why this is happening and how to fix it? (included are the most important parts of the error message)

sick birch
#
discord.utils.format(user.created_at, style='f')
``` for example
muted quarry
slate swan
sick birch
#

Right, like I mentioned you have to surround it with the proper tag: <t:TIMESTAMP_HERE:F>

sick birch
# slate swan yeah

Makes sense. replit tends to do that, one of the reasons replit sucks and you should consider not using it

muted quarry
sick birch
#

That is to say, Discord

muted quarry
sick birch
#

So we're not hard-coding anything in

#

It'll get the timestamp of the user you mention

slate swan
boreal ravine
#

bryan 😮

sick birch
mental oar
sick birch
#

And most reputable providers (google cloud, azure, etc) will all have some level of free-tier hosting

muted quarry
sick birch
#

Use the format_dt util I mentioned earlier

granite parcel
muted quarry
slate swan
sick birch
sick birch
muted quarry
granite parcel
slate swan
sick birch
#
@bot.command()
async def my_command(ctx, member: discord.Member):
  # member is the user that that someone mentioned
  discord.utils.format_dt(member.created_at, style='F')
sick birch
#

You'd SSH into it

slate swan
#

no idea what that means but ill go with it

sick birch
#

SSH stands for secure shell. It lets you log in to a remote computer somewhere else in the world, and control it as if you were sitting in front of it with a keyboard and mouse plugged into that remote computer

slate swan
#

yeah im definitely moving to that

sick birch
#

Great. They also have other services if you decide you want to expand your bot. Personally, I have a web dashboard for my bot so I need a domain and multiple EC2 instances

slate swan
#

is the free tier any good?

sick birch
#

For a discord bot? Definetely

#

~1gb ram and ~8gb memory and 1 core iirc

muted quarry
#

@sick birch 'discord.utils' has no attribute 'format_dt'

sick birch
#

Ah. Make sure you're on 2.0

slate swan
muted quarry
sick birch
#

Only thing that'd be running on the VPS is Linux and your code

slate swan
#

oh so i need an understanding of linux for this?

paper sluice
sick birch
#

Don't need but it'd be helpful to know your way around

maiden fable
sick birch
paper sluice
maiden fable
#

Well, most of the times, it will be as easy as:
-> Installing Python
-> Installing deps
-> Running python main.py

sick birch
maiden fable
#

(The first step cz iirc Linux still uses 3.7 or smth)

sick birch
#

So why not use the nice function right?

sick birch
paper sluice
#

hmm, makes sense

maiden fable
sick birch
slate swan
sick birch
slate swan
#

ubuntu uses 2.7 & 3.8 , kali is on 3.9

paper sluice
# sick birch :D

can't u upgrade from 3.10.0 to 3.10.4 without having to install the whole thing again, is there like a command for that?

maiden fable
#

Seems complicated to me

sick birch
slate swan
#

😔 there's nothing complicated with linux
atleast its not that hard how people represent it in memes

sick birch
#

In my case I'd just run $ sudo pacman -Syu to do a full system upgrade including python

paper sluice
maiden fable
sick birch
paper sluice
#

0.o

sick birch
maiden fable
#

Eh, also my laptop doesn't support Dual Booting soooo

sick birch
#

That's unfortunate

maiden fable
#

Yea, smth like Secure Boot is getting in the way haha

sick birch
#

I personally don't like dual booting

#

But I"m forced to for the time being

maiden fable
#

Tho I might install Linux on my old potato since the specs are, uhhhh, no comments

slate swan
maiden fable
slate swan
sick birch
#

I had to go out and get myself more storage for dualbooting. Now I'm at 4.5TB but it still doesn't feel like enough

slate swan
slate swan
maiden fable
maiden fable
slate swan
slate swan
sick birch
slate swan
#

but thats a known issue

maiden fable
#

Ah yea I heard bout it

worthy mortar
#

Has anyone here created a discord sales bot?

maiden fable
#

Hm?

slate swan
sick birch
#

Using, actual money?

maiden fable
#

Wym sales bot lol
What do u wanna sell

slate swan
#

sales bot

sick birch
maiden fable
#

He do be converting discord to an eCommerce website/app

slate swan
slate swan
#

instead of copy pasting it

sick birch
#

If you want to use actual transactions, best way would be to have users pay money on your web dashboard frontend using something like Stripe API, and add some amount of "Credits" in the backend database. From discord, they can buy/sell things using those "Credits"

#

Since money transactions are not a thing on discord yet unfortunately

#

In theory it shouldn't be all that difficult

maiden fable
#

Might as well code him the Dashboard since I suck at web deving :D

sick birch
#

I like web dev

maiden fable
#

Ik (:

sick birch
#

Anyway. I'm off to bed. Good night to you all!

worthy mortar
#

https://deadrare.io/collection/EAPES-8f3c1f?tab=activity

Check out this website of 'recent activity'. I am trying to build some type of python program to document the amount of sales per day to help out someone who has been doing it manually, I am really just unsure of how to scrape that data, maybe sales bot was a bad use of words, lol

maiden fable
worthy mortar
maiden fable
#

Well, is this your website? Since I know an easy way to get the data

worthy mortar
maiden fable
#

Oh

#

Hm, I don't think the website would like u scraping it but

#

!pypi beautifulsoup4

unkempt canyonBOT
maiden fable
#

You should use this

#

Also, be vary that there is a possibility u r breaking the ToS and your IP can get blocked by the website

#

Also, run that in an executor since the process is blocking

#

!d asyncio.loop.run_in_executor

unkempt canyonBOT
#

awaitable loop.run_in_executor(executor, func, *args)```
Arrange for *func* to be called in the specified executor.

The *executor* argument should be an [`concurrent.futures.Executor`](https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor "concurrent.futures.Executor") instance. The default executor is used if *executor* is `None`.

Example:
worthy mortar
maiden fable
surreal ruin
#

What i have to put here

#

I am making a pokemon bot

torn sail
#

python main.py

surreal ruin
#

Oo

surreal ruin
#

How to fix this error

buoyant zodiac
#

How do you get that white text type thing

#

at the top

next haven
#

can someone pls help me with why my discord bot isnt working

vale wing
#

How

next haven
vale wing
#

Depends

#

Send the code here without token

undone wyvern
buoyant zodiac
#

not at the top top, the embed.Title

boreal ravine
#

it's the description of the embed if you mean the timestamp

slate swan
#

I wanna do like if the guilds id is in a variable (in the same file) so the bot should leave the guild automatically

#

make the variable as a list and check py if guild_id in variable: #leave

buoyant zodiac
#

no let me show u what i mean

#

the white box around it

#

of the time

boreal ravine
buoyant zodiac
#

i thought it was the title my ba

#

but still how do i get the white outline thingy

buoyant zodiac
boreal ravine
#

the timestamp has a white background

buoyant zodiac
#

soo is ctx.guild.created_at , would that work?

boreal ravine
#

no

#

you'd wanna do guild.created_at.timestamp() to get the timestamp of when the guild was created

buoyant zodiac
#

okay thank you

maiden fable
#

@buoyant zodiac don't u think u should change yr nick? 😐

surreal ruin
#

Tell me how to fix it

#

I make a pokemon bot

#

@lyric needle

#

Please sir help me

#

You are a helper

tawdry perch
#

don't ping random users to help :/

muted dagger
tawdry perch
#

hmm?

surreal ruin
#

Huh

muted dagger
#

if you have a certain problem,
and it quite literally says "ask (person) for help"
who do you ask?

tawdry perch
#

I don't have a "problem" I just mentioned that I don't think they should be pinging random users for help.

granite parcel
#
embed.add_field(name="__Generals:__" , value=f"**Role Name**: {role.name}\n**Role ID**: {role.id}\n**Hex value**: {role.color}\n**Hoisted**: {role.hoist}\n**Managed**: {role.managed}\n**Integration**: {role.is_integration()}\n**Mentionable**: {role.mentionable}\n**Created**: <t:{role.created_at.timestamp()}>", inline=True)```
#

the time stamp isnt working

visual island
#

The timestamp formatting requires an integer, cast it to int.

granite parcel
#

how do i do it

slate swan
#

Might as well say to a doctor "Why is my arm hurting?".

#

..

#

Is there any way that my bot can read the message and get a response from the user? Example

Bot: Say something
Me: Hello123
Bot: You said "Hello123"```
boreal ravine
#

yes

slate swan
#

I know, there is a way, but I just don't know how.

boreal ravine
#

make an on_message event

#
@bot.event
async def on_message(message):
    ...
slate swan
#

No, that's not what I want.

boreal ravine
#

oh

#

!d discord.Client.wait_for this is what you want?

unkempt canyonBOT
#

wait_for(event, /, *, check=None, timeout=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Waits for a WebSocket event to be dispatched.

This could be used to wait for a user to reply to a message, or to react to a message, or to edit a message in a self-contained way.

The `timeout` parameter is passed onto [`asyncio.wait_for()`](https://docs.python.org/3/library/asyncio-task.html#asyncio.wait_for "(in Python v3.10)"). By default, it does not timeout. Note that this does propagate the [`asyncio.TimeoutError`](https://docs.python.org/3/library/asyncio-exceptions.html#asyncio.TimeoutError "(in Python v3.10)") for you in case of timeout and is provided for ease of use.

In case the event returns multiple arguments, a [`tuple`](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.10)") containing those arguments is returned instead. Please check the [documentation](https://discordpy.readthedocs.io/en/master/api.html#discord-api-events) for a list of events and their parameters.

This function returns the **first event that meets the requirements**...
slate swan
#

Say I do this.

Me: .hello
Bot: Hello, say something.
Me: Sdksds
Bot You said "Sdksds"```
boreal ravine
#

it's simple, ```py
message = await bot.wait_for('message', timeout=15)

await channel.send(f'You said {message.content}')

slate swan
#

Like

#
await ctx.send(f"y or n")

    # This will make sure that the response will only be registered if the following
    # conditions are met:
    def check(msg):
        return msg.author == ctx.author and msg.channel == ctx.channel and \
        msg.content.lower() in ["y", "n"]

    msg = await client.wait_for("message", check=check)
    if msg.content.lower() == "y":
        await ctx.send("You said yes!")
    else:
        await ctx.send("You said no!")```

Found this on SOF
boreal ravine
#

that would work yes

slate swan
#

why a \ in check?

#

But I don't want it to have only 2 answers.

#

y and n

slate swan
boreal ravine
slate swan
#

nvm i got it

slate swan
#

<t:1649920994>

#

that's cool.

boreal ravine
#

indeed it is

slate swan
#

how do I get colored text?

boreal ravine
slate swan
#

am I the only who uses less lines as much as possible .-.

slate swan
placid skiff
slate swan
boreal ravine
slate swan
#

Got it.

#

Thank you.

slate swan
desert cosmos
#

!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.

placid skiff
#

Plus it is better to use discord.py exception for... discord exception lol

slate swan
#

you need to copy paste those unicodes from the website

#

Ahhh, how can I send a message to the channel with "on_raw_reaction_add"?

slate swan
#

Oh nvm.

slate swan
#

Sorry!

vale wing
slate swan
#
\u001b\u001b[1;32mThat's some cool formatted text right?
\u001bThat's some cool formatted text right?
#

copy paste the unicodes from their website

#



#

Is it that

slate swan
#

what do you mean

#
That's some cool formatted text right?
That's some cool formatted text right?
paper sluice
#
hello world
slate swan
#
LMFAO, This Is kinda cool
slate swan
paper sluice
slate swan
#

so I replace the \u001b for that character?

paper sluice
#
Hello 
slate swan
#

you have to be on pc if you wanna use that

surreal ruin
#

@restive coral

#

How to fix it

slate swan
#
Hi!
surreal ruin
#

I try several times

#

But nothing happened

slate swan
#

error?

paper sluice
jolly karma
#

how do i save my bot from being rate limited?

#

like how many requests can i send to discord api in a minute?

#

to not get rate limited

visual island
jolly karma
visual island
#

yes, I doubt that you can change a guild's name 1 time per second.

jolly karma
jolly karma
#

if u want

visual island
#

You can share it here

slate swan
jolly karma
slate swan
#

no

jolly karma
slate swan
#

well

jolly karma
#

can i show in dms?

slate swan
#

no thanks, you could run a task loop and change the server's icon every 1 second

#

!d discord.ext.tasks.loop

unkempt canyonBOT
#

discord.ext.tasks.loop(*, seconds=..., minutes=..., hours=..., time=..., count=None, reconnect=True)```
A decorator that schedules a task in the background for you with optional reconnect logic. The decorator returns a [`Loop`](https://discordpy.readthedocs.io/en/master/ext/tasks/index.html#discord.ext.tasks.Loop "discord.ext.tasks.Loop").
jolly karma
jolly karma
maiden fable
maiden fable
surreal ruin
slate swan
#

^^

paper sluice
#

i guess, never tried though

slate swan
jolly karma
slate swan
jolly karma
slate swan
#

sure

slate swan
#

you can just type out those unicodes

#

for yor bot

silent ridge
maiden fable
silent ridge
#

that is the issue

#

nvm got em

maiden fable
#

Lol

silent ridge
#
    default = 0
    teal = 0x1abc9c
    dark_teal = 0x11806a
    green = 0x2ecc71
    dark_green = 0x1f8b4c
    blue = 0x3498db
    dark_blue = 0x206694
    purple = 0x9b59b6
    dark_purple = 0x71368a
    magenta = 0xe91e63
    dark_magenta = 0xad1457
    gold = 0xf1c40f
    dark_gold = 0xc27c0e
    orange = 0xe67e22
    dark_orange = 0xa84300
    red = 0xe74c3c
    dark_red = 0x992d22
    lighter_grey = 0x95a5a6
    dark_grey = 0x607d8b
    light_grey = 0x979c9f
    darker_grey = 0x546e7a
    blurple = 0x7289da
    greyple = 0x99aab5```
maiden fable
#

Just search up HTML Color Code selector

silent ridge
#

i have them no worries

maiden fable
#

Cool

silent ridge
#

@maiden fable which color is fitable at this reply of the bot

maiden fable
#

Green prolly

silent ridge
#

good one

#

ty Kisses

#

guys I am dumb asf but a new line is \n right? 😭

maiden fable
#

Yea

silent ridge
#

alright

brave flint
#

um

granite parcel
#

how i convert file upload limit to MB

supple thorn
granite parcel
sweet pilot
supple thorn
sweet pilot
#

yeah lol

hardy yoke
hardy yoke
boreal ravine
#

agreed

junior verge
formal basin
#

What does this mean

heavy folio
#

channel is an integer

cold sonnet
#

you do
await channel_id.send(something)
instead of

channel = bot.get_channel(channel_id) 
await channel.send(something)
heavy folio
#

!d discord.Guild.get_channel to get the channel

unkempt canyonBOT
#

get_channel(channel_id, /)```
Returns a channel with the given ID.

Note

This does *not* search for threads.

Changed in version 2.0: `channel_id` parameter is now positional-only.
silent ridge
slate swan
#

why type too much when you can have less

granite parcel
#

how to do this coz my embed word are goin more than 1024 words

slate swan
granite parcel
#

this i used for everyone

granite parcel
#

btw ty

crimson yarrow
#

how do i make my bot find the ID of the last message it sent in any channel?

spring flax
#

!d discord.TextChannel.history

unkempt canyonBOT
#

async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)```
Returns an [asynchronous iterator](https://docs.python.org/3/glossary.html#term-asynchronous-iterator "(in Python v3.10)") that enables receiving the destination’s message history.

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

Examples

Usage...
crimson yarrow
#

thanks

pliant gulch
#

!d discord.TextChannel.last_message_id

unkempt canyonBOT
supple thorn
#

Probably using the twitch api

#

As i've never used the twitch api i don't know how

spring flax
#

are there API's twitter,, Instagram, YouTube , Twitch and Trovo?

supple thorn
#

!pypi twitchAPI

unkempt canyonBOT
#

A Python 3.7+ implementation of the Twitch Helix API, its Webhook, PubSub and EventSub

waxen ruin
#

Hey there, I had a issue regarding discord.py. How can I receive a discord.exe command (@client.commands) from a webhook? For example, i make a web hook send a message to a channel, which contains a command, how do i make my discord.py bot read that command and execute it. Alternatively, is there a better way to send messages to a discord.py bot, through a web javascript application.

#

Thanks

supple thorn
#

Like a webhook triggering a command?

waxen ruin
#

yes

supple thorn
#

Or like the webhook contains the code

waxen ruin
#

No, say the webhook says !help

#

I want my bot to read that command

#

like it would read from a normal user

supple thorn
#

Can a webhook even trigger a command?

waxen ruin
minor totem
waxen ruin
minor totem
waxen ruin
#

where that url is the web hook url

#

so this is the simple bit

minor totem
waxen ruin
#

and when i run the function, i get a message on the webhook channel

minor totem
#

That's an extreme security vulnerability ⚠️

waxen ruin
#

so al that works just as it should, just my discord.py bot doesnt read it

waxen ruin
#

rn this is not even connected to a proper thing, when i do that, im going to store sensitive info as env

minor totem
#

You can't secure it "later" because fundementally sending a webhook like this is insecure

waxen ruin
minor totem
#

You're giving anyone on the internet, access to this webhook which they can do anything with

waxen ruin
#

its not getting published anywhere public

#

so no one except me and people i add can use it

minor totem
waxen ruin
minor totem
# spring flax anyone?

Twitter, Twitch and YouTube all have APIs. I don't know whether Instagram fors and I have no idea what Trovo is.

minor totem
sullen pewter
#
x = 5
y = 6

How to exchange these variables

#

How to make it

x = 6
y = 5
junior verge
#
temp = x
x = y
y = temp
maiden fable
junior verge
#

uh true ye

maiden fable
#

!e
a = 1
b = 2
a, b = b, a
print(a, b)

unkempt canyonBOT
#

@maiden fable :white_check_mark: Your eval job has completed with return code 0.

2 1
maiden fable
#

See

sullen pewter
maiden fable
#

U didn't print

junior verge
#

ye mb

spring flax
#
    async def send_bot_help(self, mapping):
        filtered = await self.filter_commands(bot.commands, sort=True)
        e = disnake.Embed(description=filtered)
        await self.context.send(embed=e)
junior verge
#

!e
x = 1
y = 2

temp = x
x = y
y = temp
print(x)
print(y)

unkempt canyonBOT
#

@junior verge :white_check_mark: Your eval job has completed with return code 0.

001 | 2
002 | 1
junior verge
#

works too

maiden fable
#

Yea

spring flax
#

I have this now but same thingfiltered = await self.filter_commands(self.context.bot.commands, sort=True)

boreal ravine
spring flax
#

oh wait

boreal ravine
#

commands.HelpCommand

spring flax
#

!d discord.ext.commands.HelpCommand.filter_commands

unkempt canyonBOT
#

await filter_commands(commands, /, *, sort=False, key=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Returns a filtered list of commands and optionally sorts them.

This takes into account the [`verify_checks`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.HelpCommand.verify_checks "discord.ext.commands.HelpCommand.verify_checks") and [`show_hidden`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.HelpCommand.show_hidden "discord.ext.commands.HelpCommand.show_hidden") attributes.

Changed in version 2.0: `commands` parameter is now positional-only.
spring flax
#

oh yeah it returns a list of commands

#

not strings my bad

#

command objects*

boreal ravine
surreal ruin
#
How i can fix this error? I am making a pokemon bot on replit```
spring flax
#

coding on replit on phone wow

#

sending the code would help

#

!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.

slate swan
#

kotlin huh?

supple thorn
surreal ruin
#

@slate swan

junior verge
#

replit yay

surreal ruin
#

Yes

#

I use replit@junior verge

supple thorn
#

And why do you keep pinging people

surreal ruin
#

to make pokemon bots

surreal ruin
boreal ravine
surreal ruin
#

:/

boreal ravine
#

which d.py version are you using?

surreal ruin
#

Wait

#

3.8

surreal ruin
visual island
#

What discord.py version are you using, not your python version

slate swan
#

how to get a message link?

#

no a particular message
the link should be of the message the user sent to use the command

lofty pecan
#

Hey there, I was wondering how I could have embed displays the different information in rows instead of having a weird layout. I'm using embed.add_field to add a new field to an embed but it doesn't add a new row for some reason

#

here is an example

#

it uses columns and when I have more field it makes something really bad looking

unkempt canyonBOT
#

class discord.Embed(*, colour=None, color=None, title=None, type='rich', url=None, description=None, timestamp=None)```
Represents a Discord embed.

len(x) Returns the total size of the embed. Useful for checking if it’s within the 6000 character limit.

bool(b) Returns whether the embed has any data set.

New in version 2.0.

For ease of use, all parameters that expect a [`str`](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.10)") are implicitly casted to [`str`](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.10)") for you.

Changed in version 2.0: `Embed.Empty` has been removed in favour of `None`.
lofty pecan
#

yeah

#

I just found that I thought the default value was set to False

#

!d discord.Embed.add_field

unkempt canyonBOT
#

add_field(*, name, value, inline=True)```
Adds a field to the embed object.

This function returns the class instance to allow for fluent-style chaining. Can only be up to 25 fields.
lofty pecan
#

yeah it's set to True by default lmao

#

thanks

#

!d discord.Embed.set_thumbnail

unkempt canyonBOT
#

set_thumbnail(*, url)```
Sets the thumbnail for the embed content.

This function returns the class instance to allow for fluent-style chaining.

Changed in version 1.4: Passing `None` removes the thumbnail.
surreal ruin
#

I am using replit

#

To make bots

supple thorn
#

He's asking what d.py version

boreal ravine
#

@surreal ruin can you do pip show discord.py in the shell?

supple thorn
#

Not your weird ide choice

surreal ruin
#

Wait

surreal ruin
slate swan
surreal ruin
#

Ok

slate swan
#

Or since you are using repl.it just add in code import discord.py and it should install it automatically

surreal ruin
#

Ok

boreal ravine
surreal ruin
#

Done

#

I already install

#

Like 1m ago

boreal ravine
#

thats d.py stable branch, you need d.py master in order to use poketwo as the error said before

slate swan
#

@surreal ruin does it work now?

boreal ravine
surreal ruin
#

Ok

paper sluice
#

make sure u have git installed

surreal ruin
#

It come like this

#

Was it get installed

paper sluice
#

ya thats fine

#

congrats, now u have dpy2.0 🎉

slate swan
surreal ruin
#

oo

boreal ravine
slate swan
paper sluice
#

why even bother with zip files, just copy paste each file

junior verge
slate swan
mortal dove
#

I have a question about help commands. I'm trying to change the default command but I getting an error saying that Help doesn't inherit commands.HelpCommand, even though it does.

# Help class (in cog)
class Help(commands.HelpCommand):
  #...
  async def send_bot_help(self, ctx):
    #...

# Bot init
bot: commands.Bot = discord.ext.commands.Bot(
    #...
    help_command = cogs.Help.Help,
)
``` Anyone know why this doesn't work? Thanks
mortal dove
boreal ravine
#

maybe your using the commands extension of another library

boreal ravine
mortal dove
#

Also says that commands is for the wrapper

#

from client_container import * is the only import

#

and in client container is just this

surreal ruin
boreal ravine
#

show full error?

mortal dove
#

They're all used in other files, so in other files I can just use from client_container import *

#

Nothing actually happens there

mortal dove
mortal dove
surreal ruin
paper sluice
#

it just puts so many unnecessary objects in the namespace

#

and it makes it hard to understand

green bluff
surreal ruin
#

Wait

slate swan
surreal ruin
#

Hello any

winged bone
boreal ravine
maiden fable
winged bone
#

yeah and a class is an instance of...

#

type

maiden fable
#

So that there's functionality for smth like MyTotallyNotCoolClass()()

winged bone
#

yeah

#

!e

class MyClass:
    pass

print(MyClass.__call__)
print(MyClass.__call__())```
unkempt canyonBOT
#

@winged bone :white_check_mark: Your eval job has completed with return code 0.

001 | <method-wrapper '__call__' of type object at 0x55d4a48082a0>
002 | <__main__.MyClass object at 0x7f96cffc14e0>
supple thorn
#

Wtf

paper sluice
slate swan
#

@supple thorn he use kotlin instead of py in the code block

#

..

#

!code

unkempt canyonBOT
#

Here's how to format Python code on Discord:

```py
print('Hello world!')
```

These are backticks, not quotes. Check this out if you can't find the backtick key.

slate swan
#

^

paper sluice
#

```py
```kotlin

slate swan
mortal dove
#

```py
cope
```

slate swan
#

cope

paper sluice
mortal dove
#

^

slate swan
paper sluice
#

just one

slate swan
#

same issue

paper sluice
#

to learn discord markdown

#

```kotlin
```

#

just add another one below that

mortal dove
#

Oh I was doing

\`\`\`py

\`\`\`
slate swan
#

..

slate swan
paper sluice
slate swan
#

```kotlin ```

mortal dove
#

Nice.

paper sluice
#

finally

slate swan
#

Finaaly

paper sluice
#

aa

slate swan
#

What are you doing?

paper sluice
#

hello
hello
hello

#

he purged himself

#

fix

slate swan
#

?

supple thorn
#

Wtf is even kotlin

supple thorn
slate swan
#

idk

supple thorn
slate swan
#

idk

cloud dawn
#

@pliant gulch ```py
for module in pkgutil.walk_packages(ext.path, f"{ext.name}.", onerror=on_error):
if unqualify(module.name).startswith("_"):
# Ignore module/package names starting with an underscore.
continue

    if module.ispkg:
        imported = importlib.import_module(module.name)
        for name, obj in inspect.getmembers(imported):
            if inspect.isclass(obj) and issubclass(obj, Group):
                yield obj
supple thorn
boreal ravine
supple thorn
boreal ravine
#

why what

cloud dawn
#

kotlin > java

surreal ruin
#

`oo``

slate swan
surreal ruin
#

:0

paper sluice
#

this channel is everything but discord-bots related

cloud dawn
boreal ravine
slate swan
#

hi this not working :<

kotlin >= java
import bot
from bot import magic
bot.run(magic)
surreal ruin
#

@boreal ravine this error is coming

slate swan
#

..

#

yes

boreal ravine
surreal ruin
slate swan
surreal ruin
boreal ravine
#

no thanks

surreal ruin
#

Oh

#

Ok

#

Np

slate swan
#

ill help u

surreal ruin
slate swan
#

ok

surreal ruin
#

Come in dm

ancient raven
#

Hey im new to this and im getting an error to which idk the fix

#

Its a very long error lol

lofty pecan
#

Hi there, I made a bot to create information cards. So I have a command that asks the user for several information, the thing is that I'd like to display of the user took too much time. I found a method using try and except asyncio.TimeoutError, that works well on one input but I feel like repeating the same thing for 6 inputs might be really bad, so would there be any better way?

slate swan
ancient raven
#

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 563, in connect
self.ws = await asyncio.wait_for(coro, timeout=60.0)
File "/usr/lib/python3.8/asyncio/tasks.py", line 494, in wait_for
return fut.result()
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/gateway.py", line 305, in from_client
gateway = gateway or await client.http.get_gateway()
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/http.py", line 969, in get_gateway
raise GatewayNotFound() from exc
discord.errors.GatewayNotFound: The gateway to connect to discord was not found.

slate swan
#

invalid token ig

#

idk

ancient raven
#

the bot works for sometime and then goes off showing this error and works again

slate swan
#

..

cloud dawn
#

I think he's blocking the connection with Discord, maybe an antivirus.

ancient raven
slate swan
#

..

cloud dawn
slate swan
#

show code btw

cloud dawn
#

Repl.it could throw these errors from time to time.

ancient raven
slate swan
#

vsc

ancient raven
ancient raven
slate swan
ancient raven
lofty pecan
#

don't expect to find a reliable free hosting services

slate swan
cloud dawn
lofty pecan
#

see this

cloud dawn
ancient raven
ancient raven
lofty pecan
#

not really, i'm still developping my bot and for now I only run it on my pc

cloud dawn
lofty pecan
ancient raven
#

well thanks guys for the info

slate swan
#

try heroku

lofty pecan
# lofty pecan Hi there, I made a bot to create **information cards**. So I have a command that...

Since I wrote this chunck whenever I have a cooldown going on I was wondering If i could do the same with that

@commands.Cog.listener()
    async def on_command_error(self, ctx, error):
        if isinstance(error, commands.CommandOnCooldown):
            retry = error.retry_after
            remaining_time = str(datetime.timedelta(seconds=int(retry)))
            embed = discord.Embed(title=":clock1: Slow Down!!", description=f'{ctx.author.mention}, you can use this command again in ' + str(remaining_time), color=0xE74C3C)
            await ctx.send(embed=embed)```
slate swan
#

no-

#

not heroku

slate swan
sweet pilot
#

don't try it

ancient raven
#

lol

sweet pilot
#

is the general advice

slate swan
surreal ruin
#

Same error

sweet pilot
#

try smthing like aws

surreal ruin
#

:(

#

Idk how to fix it

slate swan
slate swan
sweet pilot
narrow rune
#

Oracle cloud

slate swan
#

Updating dependencies
Resolving dependencies..

sweet pilot
#

each 12 months

slate swan
#

pings

narrow rune
#

Google cloud is free forever

#

Free tier

slate swan
sweet pilot
#

srsly?

narrow rune
#

Well free until they change it

slate swan
#

yeah

slate swan
sweet pilot
#

u just hv to setup a vm and run ur program

narrow rune
sweet pilot
#

it has 800mbps speeds

surreal ruin
#

@slate swan it coming ^C
^C

sweet pilot
#

for free tier

slate swan
narrow rune
#

Oracle is good also. U get free 4 core arm vps with 24gb ram

surreal ruin
ancient raven
#

oh

slate swan
#
  SolverProblemError

  Because discord.py (rev master) depends on discord.py (rev master) which doesn't match any versions, discord.py is forbidden.
  So, because poketwo depends on discord.py (branch master), version solving failed.

  at /opt/virtualenvs/python3/lib/python3.8/site-packages/poetry/puzzle/solver.py:241 in _solve
      237│             packages = result.packages
      238│         except OverrideNeeded as e:
      239│             return self.solve_in_compatibility_mode(e.overrides, use_latest=use_latest)
      240│         except SolveFailure as e:
    → 241│             raise SolverProblemError(e)
      242│ 
      243│         results = dict(
      244│             depth_first_search(
      245│                 PackageNode(self._package, packages), aggregate_package_nodes
exit status 1


Replit: Updating package configuration

--> python3 -m poetry lock
Updating dependencies
Resolving dependencies...
 
  SolverProblemError

  Because discord.py (rev master) depends on discord.py (rev master) which doesn't match any versions, discord.py is forbidden.
  So, because poketwo depends on discord.py (branch master), version solving failed.

  at /opt/virtualenvs/python3/lib/python3.8/site-packages/poetry/puzzle/solver.py:241 in _solve
      237│             packages = result.packages
      238│         except OverrideNeeded as e:
      239│             return self.solve_in_compatibility_mode(e.overrides, use_latest=use_latest)
      240│         except SolveFailure as e:
    → 241│             raise SolverProblemError(e)
      242│ 
      243│         results = dict(
      244│             depth_first_search(
      245│                 PackageNode(self._package, packages), aggregate_package_nodes
exit status 1
``` anyone?
narrow rune
#

But they sometimes have technical problems and take ur vps down until u login and out it back up. They also give 2 free amd cpu vps but those are shit

sweet pilot
lofty pecan
# slate swan wdym

Well, whenever a user has to input something with bot.wait_for there is a timeout. I'd like to show the user that the timeout is, well, out. And maybe I could make a global function just like that cog listener for that

slate swan
lofty pecan
#

achso!

proud rain
#

line 51, in on_user_update color=self.log_channel.guild.get_member(after.id).colour, AttributeError: 'NoneType' object has no attribute 'colour'

Why i keep getting this error=

lofty pecan
#

I could even put it in the same listener

supple thorn
#

Your member object is none

#

Do you have intents turned on?

proud rain
#
@Cog.listener()
    async def on_user_update(self, before, after):
        if before.name != after.name:
            embed = Embed(title="Navne Skifte",
                          colour=after.colour,
                          timestamp=datetime.utcnow())

            fields = [("Før:", before.name, False),
                      ("Efter:", after.name, False)]

            for name, value, inline in fields:
                embed.add_field(name=name, value=value, inline=inline)

            await self.log_channel.send(embed=embed)

        if before.discriminator != after.discriminator:
            embed = Embed(title="Discriminator Skifte",
                          colour=after.colour,
                          timestamp=datetime.utcnow())

            fields = [("Før:", before.discriminator, False),
                      ("Efter:", after.discriminator, False)]

            for name, value, inline in fields:
                embed.add_field(name=name, value=value, inline=inline)


            await self.log_channel.send(embed=embed)

        if before.avatar_url != after.avatar_url:
            embed = Embed(title="Profilbillede Skifte",
                          description="Nyt billede er nedenunder, og gamle er til højre.",
                          color=self.log_channel.guild.get_member(after.id).colour,
                          timestamp=datetime.utcnow())

            embed.set_thumbnail(url=before.avatar_url)
            embed.set_image(url=after.avatar_url)



            await self.log_channel.send(embed=embed)```
#

yup

#

but should i have the intents in cogs also=

supple thorn
proud rain
#

or only in the main file?

supple thorn
#

If you have intents already enabled in your bot constructor it should be fine

proud rain
#
intents = discord.Intents.all()
#

thats the only i hav

slate swan
#

GOOGLE CLOUD NEED CREDIT CARD!!

supple thorn
proud rain
supple thorn
proud rain
#

should i have more?

supple thorn
#

No

paper sluice
proud rain
paper sluice
#

what error?

proud rain
#
    color=self.log_channel.guild.get_member(after.id).colour,
AttributeError: 'NoneType' object has no attribute 'colour'
paper sluice
#

can u print self.log_chanel.guild

proud rain
paper sluice
#

i wanna what that is

supple thorn
paper sluice
supple thorn
proud rain
lofty pecan
supple thorn
lofty pecan
#
@commands.Cog.listener()
    async def on_command_error(self, ctx, error):
        if isinstance(error, commands.CommandOnCooldown):
            retry = error.retry_after
            remaining_time = str(datetime.timedelta(seconds=int(retry)))
            embed = discord.Embed(title=":clock1: Slow Down!!", description=f'{ctx.author.mention}, you can use this command again in ' + str(remaining_time), color=0xE74C3C)
            await ctx.send(embed=embed)

        elif isinstance(error, asyncio.TimeoutError):
            await ctx.send('You took too long, process canceled.')
supple thorn
#

Uh

cloud dawn
#

I needed the doc lol

lofty pecan
slate swan
#

!d rich

unkempt canyonBOT
#

Rich text and beautiful formatting in the terminal.

supple thorn
lofty pecan
#

yes

supple thorn
#

Does it throw the error in the console?

lofty pecan
#

nope

supple thorn
lofty pecan
#

ye

#

of course

#

didn't do anything

slate swan
lofty pecan
#

not a on_command_error

#

but something else ?

lofty pecan
vale wing
lofty pecan
#

mmh

vale wing
#

Thx

slate swan
#

:D

#

🍰 🧁 🍫 🥳 🥳 🥳 🥳 🥳 🥳 🥳

vale wing
#

Lol

lofty pecan
#

ho ! and then use a try and except asyncio.TimeoutError ?

#

because this is what I do rn:

await ctx.send('Enter the name of the character: ')
            name = await self.bot.wait_for('message', check=check, timeout=30)
                
            await ctx.send('Enter the age of the character: ')
            age = await self.bot.wait_for('message', check=check, timeout=30)

            await ctx.send('Enter the gender of the character: ')
            gender = await self.bot.wait_for('message', check=check, timeout=30)
                
            await ctx.send('Enter the picture url of the character: ')
            picture = await self.bot.wait_for('message', check=check, timeout=60)
                    
            await ctx.send("Enter the hex code of the character (without the `#`): ")
            Hex = await self.bot.wait_for('message', check=check, timeout=60)
                
            await ctx.send('Enter the description of the character: ')
            desc = await self.bot.wait_for('message', check=check, timeout=60)
                    
            await ctx.send('Enter the universe the character belongs to: ')
            universe = await self.bot.wait_for('message', check=check, timeout=30)
                    
            
            f[f'{name.content}'] ={'age': age.content,
                            'gender': gender.content,
                            'picture': picture.content,
                            'hex': f'0x{Hex.content}',
                            'description': desc.content,
                            'universe': universe.content```
#

and f = fetch(f'database\{id}\{id_user}') already

#

so I would first define the final dictionnary and then json.dump into the file I want?

vale wing
#

@lofty pecan what I mean is something like this

questions = {"What is your name?": None, "What is your age?": None}
for q in questions:
    await ctx.send(q)
    m = await bot.wait_for(...)
    questions[q] = m.content```
#

You could surround the for loop with try-except

vale wing
lofty pecan
vale wing
#

When you iterate through dict you get its keys

vale wing
#

Structureless

#

And inconvenient for big data

lofty pecan
#

oki

#

I'm not doing big data

vale wing
#

I'd recommend to learn some sqlite

vale wing
lofty pecan
#

sqlite bothers me a lot, I already didn't like it at university

#

5 files, that's 5 users

slate swan
vale wing
#

Sqlite can't be that complicated

lofty pecan
#

meh

#

it's confusing

slate swan
#

no?

vale wing
#

Unless they teach you something like more than select/insert/update

lofty pecan
#

they did

slate swan
#

lol

vale wing
#

Indexes and rules for example

lofty pecan
#

we saw join stuff

#

class was pretty boring as well

vale wing
#

Postgres functions are kinda fun tho

lofty pecan
#

I tried to use sqlite at first but I got annoyed so I use json and dictionnaries instead

slate swan
#

can relate

vale wing
#

Trust me, you will get annoyed with updating data structure when you update your data model

slate swan
vale wing
#

Hehe

slate swan
#

funny number

lofty pecan
#

yeah idk

#

for the moment it does all I need lol

#

and if I change everything to sqlite I have to completely rewrite my bot

#

and learn sqlite

#

which is demoralizing

slate swan
#

ok

vale wing
#

You would only have to learn like 5 statements

#

Agreed about rewriting but it's better to do this before your project becomes bigger

lofty pecan
#

ye

vale wing
#

Because I have been in the same situation

slate swan
#

40 fps

slate swan
lofty pecan
#

It's also weird how people explain how to use sqlite with discord py

slate swan
#

you can just change those functions whenever you need to, and it wont affect your commands

lofty pecan
#

I did some of that

vale wing
#

With the power of OOP I created a bunch of datamodels and stored all the objects with the pickle files 💀

lofty pecan
#

not for everything tho because my bot doesn't have 100 commands and is focused on one thing only

vale wing
#

It turned into pure hell when the bot hit 100 servers

slate swan
vale wing
#

Next I rewrote it to sqlite without async wrapper

vale wing
#

And then to asyncpg and now I am fine with that way

lofty pecan
#

one command is the fetch one, just to load a json, I use it everywhere so I simply made it a global function

slate swan
#

60 fps nvmd ot

lofty pecan
slate swan
#

i started with pickle, moved to json because .bin files not readable, and finally shifted to sqlite3

#

ik mysql and pgsql but dont want to create a db server for a dumb bot project

lofty pecan
#

very demoralizing lmao

vale wing
#

I am currently working on antispam bot based on AI and am using postgres it's fast af

slate swan
#

oh and, happy birthday Exenifix 🥳

lofty pecan
#

now you know how to use it yeah

vale wing
#

Ty

#

The AI model I created works on any text

#

It's non verbal tho but I am gonna try verbal method as well later

#

I got like ~2k training samples so it's decently accurate now

#

10k would be perfect

lofty pecan
#

It's a personnal project that sounds very useful to a lot of people I asked about, I learnt how to code a discord bot, how to use json, dictionnary, embed, etc; but SQL ? my nightmare lol

slate swan
lofty pecan
#

Plus we used to have SQL class, but just SQL not related to python

vale wing
#

And yeah that bot's gonna be open source so yall can contribute

lofty pecan
#

and python is the only language I know

#

sorry I'm having a tedtalk xd

slate swan
#

why not?

paper sluice
#

cool

#

@slate swan

#

@paper sluice

#

🎉

#

wait that counts deleted msgs too?

#

i think it does

#

oh wait

slate swan
paper sluice
#

the first one doesn't count the code blocks

#

👀

slate swan
#

#bot-commands

fallow siren
#
async def Embed(message):
    if message.content.startswith('c.commandlist'):
      embedVar = discord.Embed(title='Help', description = 'commands', color=1)
      embedVar.add_field(name='c.intro', value='introduces you to the settler', inline=False)
      embedVar.add_field(name='c.start', value='Builds your first settlement', inline=False)
      embedVar.add_field(name='c.gather', value='gathers resources', inline=False)
      await message.channel.send(embed=embedVar)
  
@settler.event
async def on_message(message):
    if message.content.startswith('c.start'):
      embedhelp = discord.Embed(title='Settlement created!', description = 'You can now do c.gather to gather resources ', color=1)
      embedhelp.add_field(name='c.intro', value='introduces you to the settler', inline=False)
      await message.channel.send(embed=embedhelp)
#

this is for 2 commands

#

but they dont work no matter what i type

junior verge
#

What's the issue/error?

slate swan
#

hi

fallow siren
#

It also does not show any error message

#

so the code doesnt work but no error message

#

anyone know what going on?

sick birch
#

Lambda is for serveless functions

fallow siren
#

what

sick birch
#

I just re-read what I said. that was stupid. Let me clarify, lambda isn't the best for discord bots

#

Other than that, it's excellent

vast sky
#

So my bots been in a large server for years handing out a role. And it suddenly stopped giving the role yesterday. Anyone have an idea?

sick birch
slate swan
fallow siren
#

anyone can help me, the commands just wont work but no error message is showing up

slate swan
sick birch
#

That's the database

vale wing
#

Why not just get a VPS and setup the database there

sick birch
#

That's what I'm doing but AWS RDBMS is more scalable and has more features

slate swan
vale wing
#

Ohk

#

And what database did you use

sick birch
slate swan
#

well for me it kinda is but yeah true

#

i used it like a cloud host

sick birch
#

Most do, which is terrible

slate swan
#

i still can't find the correct t2.micro server, does it have a specific name or type?

vale wing
#

EC2 -> launch instance -> select AMI -> ubuntu -> t2.micro

slate swan
#

im on the AWS website lmfao

vale wing
#

Yes

#

There's EC2 section

sick birch
slate swan
#

i don't even have the plan set up yet, im just trying to find the correct one

vale wing
#

Could you screenshot where you are at right now

slate swan
#

ok, so the EC2 isn't actually free

#

it's 12 months free

#

afterwards it's payed

brave flint
#

why i cant use User Profile Picture urls with <img> tag on html?

vast sky
# sick birch Any errors?

I havent got around to checking yet. I just have an exception that sends "couldnt add role". Its odd it just stopped out of nowhere

#

i wonder if its possible that my bots integrated role is borked up in that server cuz my delete reactions stopped working awhile ago

slate swan
#

hi

#

. /
/---
:::

slate swan
#

broken

boreal ravine
#

I think it means 'fucked up'

slate swan
slate swan
#

could be

#

thats obvious

#

it's prolly because some js people who recently switched to py are uploading "tutorials" using events, cuz i've seen some

#

xD

potent spear
slate swan
#

they finally started thinking about dpy?

#

man last year, the devs left dpy to rot

slate swan
potent spear
#

and? it never broke

slate swan
#

👋

slate swan
slate swan
unkempt canyonBOT
slate swan
wet dune
#

Hello

slate swan
#

..

vast sky
#

Well it should havepermission to delete reactions but that stopped working too awhile ago

#

Only in that server

#

Is there a way to print what permissions my bot has in that guild

slate swan
#

!e

print('''
_____ _____ _____ _ ____ __
/ || __ \ /\ | __ \ | |/ /\ \ / /
| (
| |) |/ \ | |) || ' / \ _/ /
_
_ \ | // /\ \ | _ / | < \ /
____) || | / ____ \ | | \ \ | . \ | |
|
__/ || // _|| _||_\ |_|

''')

unkempt canyonBOT
#

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

001 | 
002 |     _____  _____          _____   _  ____     __  
003 |    / ____||  __ \  /\    |  __ \ | |/ /\ \   / /  
004 |   | (___  | |__) |/  \   | |__) || ' /  \ \_/ /  
005 |    \___ \ |  ___// /\ \  |  _  / |  <    \   /   
006 |    ____) || |   / ____ \ | | \ \ | . \    | |  
007 |   |_____/ |_|  /_/    \_\|_|  \_\|_|\_\   |_|   
sick birch
#

Ah

#

But it is free for a year isn't it

slate swan
#

?

sick birch
#

Oh oops looks like my message came in late

slate swan
#

..

sick birch
slate swan
sick birch
#

The cost after depends heavily on what instance you're and what you're doing on it

#

It's not a flat fee like for other hosts

#

They charge you per second and computing resources used iirc

maiden fable
#

Oracle VM exists 👀

sick birch
#

Yeah I've heard that's another good one. They have a free tier as well

#

I'm pretty sure so does google cloud hosting

maiden fable
#

yea, free forever

#

24 GB RAM and 6 vCores iirc

slate swan
#

what the

#

how are they making money

maiden fable
#

In exchange for yr cc info

sick birch
maiden fable
#

IKR

slate swan
#

they need cc?

maiden fable
#

iirc AWS gives like 1 or 2 GB RAM

vocal snow
#

i really doubt a free tier would give 24 gigs of RAM

maiden fable
sick birch
#

yeah but they also have ones like 400gigs of ram with 60 something cores

slate swan
#

:<

slate swan
maiden fable
#

Tho they refund it

slate swan
#

oh

vocal snow
maiden fable
#

Hahaha

vocal snow
#

that's more than my pc has >(

slate swan
sick birch
#

same haha

maiden fable
slate swan
maiden fable
lofty tinsel
#

hello Im testing cogs but it doesnt work

slate swan
#

wow

slate swan
slate swan
maiden fable
sick birch
#

What's the "2 AMD based compute VMS with 1 gb memory each"?

#

Do you get to pick what type of CPU you want?

maiden fable
#

No

lofty tinsel