#discord-bots
1 messages · Page 1027 of 1
relative(ity) Einstien, fuck i need to do that chapter
Hello ryuga
hi
Oh yeah i need to do you too
😳 what
Lol theory of relativity
😳
Is it possible for a bot to get a deleted image or embed?
Image yes
Don't know about embed
Yea
Any example if possible?
Because I have a command for message snipe
But isn’t working on image deletion
👀
!d discord.Message.embeds
Also, you can't get the deleted image since the url becomes invalid if u delete the image
No documentation found for the requested symbol.
A list of embeds the message has.
I mean
!d discord.Message.attachments
A list of attachments given to a message.
Can't you just save the attachment in the message from the on_message_delete
Cause that's how mine works
..
You can, but for bigger bots, that's nothing but wastage of resources with minimal to no advantage
Yeah but you still can
A bot can only respond to its own buttons right?
someone couldn't for example, copy your custom_id then get your bot to respond to it through on_component or on_button or whatever
Yes

I would hope so
you'd think that'd be the case but you never know 
.
The Discord API documentation always gives such information, in case something else similar to that comes out in the future: https://discord.com/developers/docs/reference#message-formatting-timestamp-styles
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
The gist is basically a copy paste of that - so the API documentation is your go-to website for such information.
@bot.command(name = "avatar", dscription = "sends A users profile picture")
async def avatar(ctx, member: discord.Member):
show_avatar = discord.Embed(
color = (discord.Color.random())
)
show_avatar.set_image(url = '{}'.format(member.avatar_url))
await ctx.send(embed = show_avatar)
hey i was trying to make an avatar command for my discord bot and it its giving me this error
can someone please help me
maybe you have a corrupted install?
@client.listen("on_guild_leave")
async def foo(guild):
channel = guild.text_channels[0]
rope = await channel.create_invite(unique=True)
me = client.get_channel(967677661545652264)
await me.send("``I have been removed frm:``")
await me.send(rope)
``` why this is not working?
This is wrong?
error?
No error
error eating error handler?
it is what it is says
huh?
huhn't
error eating error handler
u said error eating error handler not error handler eating error
are you Englishing me
...
cuz I can English very well
bruh
english is not an exercise
an exercise

do you mean an activity
Stop englishing me
anyways back to topic cuz I know what I said
do you mean not working cuz of the pylance error
🧢
So how to fix that?
async def send_cog_help(self, cog: commands.Cog):
"""implements cog help page"""
prefix = self.context.clean_prefix
invoked_with = self.invoked_with
embed = nextcord.Embed(
title=f"{cog.qualified_name} Commands", colour=self.COLOUR
)
embed_fields = []
if cog.description:
embed.description = cog.description
filtered = await self.filter_commands(cog.get_commands(), sort=True)
for command in filtered:
name=self.get_command_signature(command)
value=command.short_doc or "..."
embed.fields.append((name, value))
pages = HelpButtonMenuPages(
ctx=self.context,
source=HelpPageSource(self, embed_fields),
disable_buttons_after=True
)
await pages.start(self.context)
not showing up cmds
not overwriting foo
class HelpPageSource(menus.ListPageSource):
def __init__(self, help_command, data):
self._help_command = help_command
# you can set here how many items to display per page
super().__init__(data, per_page=2)
async def format_page(self, menu, entries):
"""
Returns an embed containing the entries for the current page
"""
prefix = self._help_command.context.clean_prefix
invoked_with = self._help_command.invoked_with
embed = nextcord.Embed(title="Bot Commands",
colour=self._help_command.COLOUR)
for entry in entries:
embed.add_field(name=entry[0], value=entry[1], inline=False)
# set the footer to display the page number
embed.add_field(
name="_ _",
value=f'*Page {menu.current_page + 1}/{self.get_max_pages()}*',
inline=False)
return embed
Why?
@heady sluice
K
then it's cap
@heady sluice what is foo?
a name
but there might be something else
any ideas?
👀
how do you get a channel from a guild you aren't in
and create an invite to it
does that work
Yes
can you create an invite to this server after you left
Join logs are working
you assuming I'm a human
what I gotta do to get it through to you I'm superhuman
Hey, does anyone have any GitHub or code they’re willing to share to make a simple YouTube player bot? Tried to make one but I’m stuck a bit
still not answered
!ytdl
Per Python Discord's Rule 5, we are unable to assist with questions related to youtube-dl, pytube, or other YouTube video downloaders, as their usage violates YouTube's Terms of Service.
For reference, this usage is covered by the following clauses in YouTube's TOS, as of 2021-03-17:
The following restrictions apply to your use of the Service. You are not allowed to:
1. access, reproduce, download, distribute, transmit, broadcast, display, sell, license, alter, modify or otherwise use any part of the Service or any Content except: (a) as specifically permitted by the Service; (b) with prior written permission from YouTube and, if applicable, the respective rights holders; or (c) as permitted by applicable law;
3. access the Service using any automated means (such as robots, botnets or scrapers) except: (a) in the case of public search engines, in accordance with YouTube’s robots.txt file; (b) with YouTube’s prior written permission; or (c) as permitted by applicable law;
9. use the Service to view or listen to Content other than for personal, non-commercial use (for example, you may not publicly screen videos or stream music from the Service)
Oh thank you I didn’t know that 😅
So i was working on a fix for my work when suddenly i see something like this:
if var=="0" where var could be 0.0
I wanna meet the guy who did this and shake his hand
||that was the issue in the end||
it works for everything else tho
check the commit history
I'm trying to setup a simple ui using the following doc. Could someone create a simple example so I can understand how to put together the info from the docs
Docs: https://docs.disnake.dev/en/latest/api.html?highlight=ui#disnake.ui.ActionRow.add_button
its quite easy as you can just fill in the kwargs and it would make a button object or you can use the append_item() as stated in docs if the button has already been made
quite clear as well here if you have any more confusion
Well discord cleared my message when it reloaded. Umm. Do I need to create an action row to add a button?
well thats a method of the class ActionRow so i suppose so
How can I create it. Idk how to use classes
Wow it's been a while since I worked with Python
you would probably just call the class as the class doesnt have a classmethod and i see no other class that returns that object
How do I call classes lol
!e
class A:
...
print(A())
@slate swan :white_check_mark: Your eval job has completed with return code 0.
<__main__.A object at 0x7f8a27a390f0>
So like in the doc?
class disnake.ui.ActionRow(*components):```
Wait what class do I call for the actions then?
is there something in which i can get len messages of member
instead of using channel history and all
ya? oh... idrk

i dont really know
okay ..
I don't think so
pretty sure you can't do that without making too many requests
!d discord.TextChannel.history
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...
Yeah but it's not a limitation
it is just the max number of message to retrieve
if it is set to None, all message will be retrieved
async for message in channel.history(limit=None):
if message.author == user:
count += 1
im using this rn
the max of message here is set to 100, it is the default so
hey guys, does anyone have an idea on how could i make a command using raw api only?
you mean making the request yourself? and you could with aiohttp
unix time
<t:timestamp integer:R>
like instead of using something like discord.py, make it only with raw api. without using the lib
like making commands
#965291516031549500 lets go here and i will continue helping you
🤦♂️ no
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
docs
The discord API docs are so dry and unhelpful (however this one doesn't happen to be that bad, it's not like http api documentation)
how can i check if every user in the server has a specific role? this isnt working
yeah, you start to understand it after a while
I would recommend everyone to at least attempt to connect to the websocket manually and get events dispatched to you at least once because it's an excellent learning oppurtunity
could you help me with my bot please
Sure, post relavant code, tracebacks if available, and any other relavant pieces of information
ty
Sounds like a hastle proceeds to write a bf compiler in my own language
It is a hassle, but hassles are gold mines when it comes to knowledge
Is that how you spell hassle
so this is my code, and when i run it it sends "[]", and prints "{bot} no role"
I'm only on my uh... 13th Discord wrapper now 
its not checkign for every member, only the bot
Sounds like a coping mechanism at this point
it is 
is that enough information?
typehint role argument in the function to discord.Role or commands.RoleConverter
im really new to this
i dont understand what your saying
change role : str to role : discord.Role
didnt work
code
@bot.command()
async def rolecheck(ctx, role:discord.Role):
users = []
for member in ctx.guild.members:
if role in member.roles:
users.append(member)
else:
print(f'{member} no role')
await ctx.send(users)
you are missing member intents
ye ig
what are they
!intents
!intents
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 Members, Message Content, and Presences. These are needed for features such as on_member events, to get access to message content, 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.
lol
coince there are only member intents there
still not workiung
did you add the intents thing?
show code
show updated code
@bot.command()
async def rolecheck(ctx, role:discord.Role):
users = []
for member in ctx.guild.members:
if role in member.roles:
users.append(member)
else:
print(f'{member} no role')
await ctx.send(users)
this is at the top fo the code:
import discord
from discord import Intents
from discord.ext import commands
import datetime
from urllib import parse, request
import re
bot = commands.Bot(command_prefix='!', description="This is a Helper Bot")
intents = Intents.default()
intents.members = True
intents = Intents.default()
intents.members = True
bot = commands.Bot(command_prefix='!', description="This is a Helper Bot", intents=intents)
did you read the full embed?
i was just changign it to what ryuga sent me
you need to turn them on from dev portal too
go to ur bot dash board and enable the privilages
https://discord.dev
go to applications
choose your bot application
bot > turn on member intents
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
wait
so
i got this:
[<Member id=504014438383222804 name='!SomeoneIsADev' discriminator='7716' bot=False nick=None guild=<Guild id=971792479609307207 name='Bot Dev' shard_id=None chunked=True member_count=4>>, <Member id=879861362476605440 name='!chrxst' discriminator='5367' bot=False nick=None guild=<Guild id=971792479609307207 name='Bot Dev' shard_id=None chunked=True member_count=4>>, <Member id=921111324862341150 name='bigsmoke' discriminator='0187' bot=False nick=None guild=<Guild id=971792479609307207 name='Bot Dev' shard_id=None chunked=True member_count=4>>]
how can i filter it down to just the names and discriminator
!d discord.Member
class discord.Member```
Represents a Discord member to a [`Guild`](https://discordpy.readthedocs.io/en/master/api.html#discord.Guild "discord.Guild").
This implements a lot of the functionality of [`User`](https://discordpy.readthedocs.io/en/master/api.html#discord.User "discord.User")...
look at the attributes
what? idk what you mean by that
i sent the link to the documentation page regarding a discord.Member object
Send the code
it shows there that discord.Member has an attribute called "name" and "discriminator"
@bot.command()
async def rolecheck(ctx, role:discord.Role):
users = []
for member in ctx.guild.members:
if role in member.roles:
users.append(member)
else:
print(f'{member} no role')
await ctx.send(users)
Enable intents on the dev portal
discord.Member.name will return the username, discord.Member.discriminator will return the discriminator
i fixed it
!d discord.Intents
class discord.Intents(**kwargs)```
Wraps up a Discord gateway intent flag.
Similar to [`Permissions`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions "discord.Permissions"), the properties provided are two way.
You can set and retrieve individual bits using the properties as if they
were regular bools.
To construct an object you can pass keyword arguments denoting the flags
to enable or disable...
thanks
jesus he's already done it
or just convert the class into a string
yeah but he probably to access both properties separatedly?
i don't really know
¯_(ツ)_/¯
it's better anyway, teaches more about reading docs
property name```
Equivalent to [`User.name`](https://discordpy.readthedocs.io/en/master/api.html#discord.User.name "discord.User.name")
using 2 properties?
well i linked it and the guy didn't even notice so
i assume he hasn't looked @ it before
well hes a beginner so its quite confusing for him
gotta learn at some point
giving him docs wont really make him learn about methods of a class and all oop
he even stated hes new to this atleast give him a little more help no?
i was willing to
thats good
until you butted in that is
not really i was giving a suggestion which can be useful for him
yeah i know
i'm just letting you know
is there any reason to be using discord.Object?
well the reason your code isn't triggering is
probably because you haven't set up intents
seems like old code as well
bot.respond👁️👁️
no
you don't have ctx in this context
lol, no context in this context
and the class doesnt even have that method
dont just copy the code from a tutorial, first understand what it does. If u get stuck refer to the docs, when u blindly copy code, its very hard to fix it
what you should do instead is first make sure the function is even triggering, so we gotta teach you about gateway intents
and then you can go for the better practice of fetching the channel instead
!intents | or just read this which explains quite well
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 Members, Message Content, and Presences. These are needed for features such as on_member events, to get access to message content, 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.
I’ll send you a link, one sec
So it’s
<t:TIMESTAMP:STYLE>
See link for what the different styles are ofc
!d discord.utils.format_dt exists
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...
Lovely
TIL
Uhm, that’s relative. Not that hard
Just pick a timestamp in the future…
Try it first… the syntax is right there ^
You never defined a timestamp
Nor did you use the syntax
embed.timestamp = ctx.message.created_at
Right
!d discord.ext.commands.Bot.get_prefix
await get_prefix(message, /)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Retrieves the prefix the bot is listening to
with the message as a context.
Changed in version 2.0: `message` parameter is now positional-only.
bot = commands.Bot(command_prefix = "")
im trying to remove a role, the command looks like this : !removerole @stray scarab @role
code:
@commands.has_permissions(administrator=True)
@bot.command()
async def removerole(ctx, role:discord.Role):
role = discord.utils.get(server.roles, name=role)
await client.add_roles(message.author.id, role)
can someone fix this for me
You don’t have a member param in your command
You need to use commands.Bot for this ( basically discord.Client with command system & tasks )
i know, the code doesnt work whats why im asking if someone can fix it as i dont know the code for this
First stop using on message I'll get easier for you to add a prefix
ctx, member: discord.Member, role: discord.Role)
And ```py
bot = commands.Bot(command_prefix = "")
Also, you don’t need to get the role, once you typehint it, it’s automatically a role object
sorry i showed a ss of a diff function 🤣
Give him the link to a dpy example
@commands.has_permissions(administrator=True)
@bot.command()
async def removerole(ctx, user: discord.Member, role:discord.Role):
role = discord.utils.get(server.roles, name=role)
await client.add_roles(message.author.id, role)
how can i make this remove the roll of the specified person and role
await user.remove_roles(role)
Also, you can remove that role=… line
I'm assuming that you're using discord.py
.
What's that
A reference to the message I replied to
did you define bot?
copied
got this error: discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions
my code:
@commands.has_permissions(administrator=True)
@bot.command()
async def removerole(ctx, user: discord.Member, role:discord.Role):
await user.remove_roles(role)
cxt.send('Done')
Seems like your bot doesn’t have permissions to remove a role. Why? Because the member you’re trying to remove a role from has a higher role than your bot
oh
Also, make sure the one who invokes the command has admin rights ofc
@bot.command()
@commands.has_permissions(administrator=True)
async def removerole(ctx, user: discord.Member, role:discord.Role):
await user.remove_roles(role)
await cxt.send('Done')

ctx not cxt
you called the argument user but its expecting a Member object? you forgot a space in the role typehint and cxt would be undefined as the context argument is being satisfied by the ctx argument and not cxt
the get_user is returning None, and you're getting the user instead of the member...?
space doesnt matter
not my point. my point is its not following pep8
well it isnt
but anyways
good one
Anyone can help me?
for emoji in ('👍', '👎'):
await msg.add_reaction(emoji)
** I want it to edit an embed when user reacts with an emoji**
How do i make the bot detect when a user reacts to the embed?
Anyone?
!d discord.ext.commands.Bot.wait_for
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...
Thanks
!d discord.Guild.bans
async for ... in bans(*, limit=1000, before=..., after=...)```
Retrieves an [asynchronous iterator](https://docs.python.org/3/glossary.html#term-asynchronous-iterator "(in Python v3.10)") of the users that are banned from the guild as a [`BanEntry`](https://discordpy.readthedocs.io/en/master/api.html#discord.BanEntry "discord.BanEntry").
You must have the [`ban_members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.ban_members "discord.Permissions.ban_members") permission
to get this information.
Changed in version 2.0: Due to a breaking change in Discord’s API, this now returns a paginated iterator instead of a list...
warnings.warn(```
whats wrong with this?
idk why its erroring as the same code worked for my other bot
Do you have the application commands scope?
When Inviting the bot
I dont want it as an event though... Is there any way around that?
` await ctx.reply(embed=reply_embed, hidden=True)
await msg.add_reaction('👍')
await msg.add_reaction('👎')
new_em = discord.Embed(color=0xf3e914, description=f"\n{suggestion}\n\n**Thoughts**\n{len(msg.reactions.count)}")
new_em.set_author(name=f"Suggested by {ctx.author}", icon_url=f"{ctx.author.avatar_url}")
new_em.set_thumbnail(url=f"{ctx.author.avatar_url}")
new_em.set_footer(icon_url=f"{ctx.guild.icon_url}", text=f"Running /suggest • {round(bot.latency * 1000)} Ms")
new_em.timestamp = datetime.datetime.utcnow()`
I sorta want the msg = embed to be replaced by new_em when a user reacts with the emoji
wdym, there isnt unless you create a task and fetch the message every 2 seconds to check if the reactions have changed
How do i do that though?
wait_for is better
but thats not ideal
why?
too many api calls, unnecessay usage of resources and slow
@client.group(invoke_without_command=True)
async def help(ctx):
embed = discord.Embed(title="**Help**",discription="**Type g!help <command> for more help!**",color=random.choice(client.colors),inline=True)
embed.add_field(name="ask",value="Answers yes or no to a question")
embed.add_field(name="clear", value="Deletes messages")
await ctx.send(embed=embed)```
this command does not show discription can anyine help
discription is correctly spelled as description
hey, how to make the parameter a channel object?
!d discord.TextChannel
class discord.TextChannel```
Represents a Discord guild text channel...
it includes every kind of channel
hey, i'm looking to make a verification bot so when a user reacts to a message the bot dm's the user
i currently have this code but the reaction_message.id it's not working
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
client = commands.Bot(command_prefix = '', intents=intents)
@client.event
async def on_ready():
await client.change_presence(status=discord.Status.do_not_disturb)
print('Tou a funcionar crl')
@client.event
async def on_raw_reaction_add(payload):
if payload.emoji == "\u2705" and reaction_mesage.id == 971835858065952799:
await payload.member.send("Hey")```
i currently have this code but the reaction message id it's giving a error
i'm not seeing how to use the on_raw_reaction_add correctly
Message this reaction is for.
any1 can help with this? thanks!
so it will be Reaction.message.id == {your_id}, Reaction being the reaction object
is there a way to do this if statement in one line without having to be redundant?
could i just do any(player.y == 22, player.y % 100 == 0)
For just two items thats probably worse, you could simply do elif object_id == 3 and (stmt or stmt):
okay thanks
!d discord.utils.format_dt
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...
Lemme look at it
And how could I implement that into a message?
Is that like,
time = discord.utils.format_dt(datetime.now)
await ctx.send(time)
So what do you recommend i do and how?
Ive read the documentation but idk
yes
it will show the default timestamp ie f
How do discord bots on lots of servers avoid getting rate limited?
How can I display the number of servers that have a bot?
The number of servers that the bot is in?
{len(bot.guilds)}
thx
thank you
that fixed it and now the bot works
Alright, I managed to get the time.
But how could I make the bot count down on how long it will still take?
Because now it just shows me a date.
well it depends most libraries handle ratelimits e.g discord.py calculates the bucket over parsing the ratelimit headers
is it feasible to install disnake and whatever other plugins in using and pushing them to my git repo so i can clone them and not have to deal with pip
You would still need to install the dependencies though
you could just have a requirements.txt file so your setup file actually knows what dependencies the package needs
my issue is pip is whining about some ssh error
ssl?
` await ctx.reply(embed=reply_embed, hidden=True)
await msg.add_reaction('👍')
await msg.add_reaction('👎')
new_em = discord.Embed(color=0xf3e914, description=f"\n{suggestion}\n\n**Thoughts**\n{len(msg.reactions.count)}")
new_em.set_author(name=f"Suggested by {ctx.author}", icon_url=f"{ctx.author.avatar_url}")
new_em.set_thumbnail(url=f"{ctx.author.avatar_url}")
new_em.set_footer(icon_url=f"{ctx.guild.icon_url}", text=f"Running /suggest • {round(bot.latency * 1000)} Ms")
new_em.timestamp = datetime.datetime.utcnow()`
I sorta want the msg = embed to be replaced by new_em when a user reacts with the emoji
Anyone who can help?
idk soem weird error
can you show it?
count down?
do you want this timestamp? <t:1651775974:R>
Yes
no i don’t have any terminals connected to me pi right ne
ah
whats the format for that timestamp btw?
it was there in the docs, style=R for this one
R style
Oh my bad sorry about that
ah cool
Anyone?
posting from their side to make it readable```py
await ctx.reply(embed=reply_embed, hidden=True)
await msg.add_reaction('👍')
await msg.add_reaction('👎')
new_em = discord.Embed(color=0xf3e914, description=f"\n{suggestion}\n\n**Thoughts**\n{len(msg.reactions.count)}")
new_em.set_author(name=f"Suggested by {ctx.author}", icon_url=f"{ctx.author.avatar_url}")
new_em.set_thumbnail(url=f"{ctx.author.avatar_url}")
new_em.set_footer(icon_url=f"{ctx.guild.icon_url}", text=f"Running /suggest • {round(bot.latency * 1000)} Ms")
new_em.timestamp = datetime.datetime.utcnow()```
And do you have any clue on how I could make the bot wait until that moment?
Since I am making a giveaway command :)
asyncio.sleep
There is also discord.utils.sleep_until for date time objects
Thanks, can you maybe help?
Thanks a lot, ur saving me a lot of time 🤗
you can easily edit the message
welcome
What?
you want to change the embed, right?
I need "I sorta want the msg = embed to be replaced by new_em when a user reacts with the emoji" that
Thats what im looking for
sorry wasn't reading all
you can use raw_reaction_add event for that
I know how to edit it, im looking for when a user reacts to edit
thanks tho
Is there documentation for that for me to go off?
yes, but bot.wait_for could be better in your case
Yes, i have the documentation for that but i tried applying it to my code and it didnt work
why is it not working? There is no error
umm? what happened in your case?
My bot just showed an error
!d discord.on_raw_reaction_add you can also try this
discord.on_raw_reaction_add(payload)```
Called when a message has a reaction added. Unlike [`on_reaction_add()`](https://discordpy.readthedocs.io/en/master/api.html#discord.on_reaction_add "discord.on_reaction_add"), this is
called regardless of the state of the internal message cache.
This requires [`Intents.reactions`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.reactions "discord.Intents.reactions") to be enabled.
what's that
Well it wont let me do it as an event as my new_embed variable cant be found in the event
as its not in the command
no, make the embed on just same alignment of @bot.event or inside the event
This?
I cant put it inside of the event as theres multiple embeds in the command
yes
That still shows an error.
Let me make sure theres nothing wrong with my other code a second
Hey @tacit token! I noticed you posted a seemingly valid Discord API token in your message and have removed your message. This means that your token has been compromised. Please change your token immediately at: https://discordapp.com/developers/applications/me
Feel free to re-post it with the token removed. If you believe this was a mistake, please let us know!
what i dont send my token
do i need to import anything to use hybrid commands ?
need help @crimson compass dm me
this is a help channel? bro
what do you need help with?
how do i leave space
pardon?
OH
yes
are you responding to me?
U mean empty field value?
this conversation is giving my 2 brain cells a serious workout
feel better soon
i wont
Use a unicode zero-width space
yes.
anyway I’m still not understanding the issue
Send a message with a button when someone else sends a message?
Just put it's value as ** **, it works lmao
like "open ticket" button
Ah
like ticket tool bot?
yes
!d discord.ui.button
discord.ui.button(*, label=None, custom_id=None, disabled=False, style=<ButtonStyle.secondary: 2>, emoji=None, row=None)```
A decorator that attaches a button to a component.
The function being decorated should have three parameters, `self` representing the [`discord.ui.View`](https://discordpy.readthedocs.io/en/master/interactions/api.html#discord.ui.View "discord.ui.View"), the [`discord.Interaction`](https://discordpy.readthedocs.io/en/master/interactions/api.html#discord.Interaction "discord.Interaction") you receive and the [`discord.ui.Button`](https://discordpy.readthedocs.io/en/master/interactions/api.html#discord.ui.Button "discord.ui.Button") being pressed.
Note
Buttons with a URL cannot be created with this function. Consider creating a [`Button`](https://discordpy.readthedocs.io/en/master/interactions/api.html#discord.ui.Button "discord.ui.Button") manually instead. This is because buttons with a URL do not have a callback associated with them since Discord does not do any processing with it.
thx
im just gonna leave this conversation its just so unclear its just doing brain_cells.create_task(understand())😭
like where to i put this in code?
@honest shoal how do i make gui like message to be in gui
...
I'm speechless
you can look for some examples, maybe they can help you
Did discord.py remove bot.get_message or was there never one?
I would think not
Hm? How does that make you speechless?
There never was one
Frls? Guess it's just guild got that
Is there a way to get a message in a different channel using its ID?
You can fetch the message
get_*() is only to lookup in cache
yeah exactly never mind me just had a brain fart
😅
Is cache currently used in the command so that wont work?
because of the following:
- I type very slow.
- I am lazy as well.
- That will require me to explain a bit.
- I am not good in explaining at all.
- I find short-cuts everywhere so I asked them to look at repo's example folder.
So hope you can understand my skills😄
That will require me to explain a bit.
but then you explain why youre speechless😭
🤣 🤣 🤣
first 2 points for that
and 4th one
😭
The message may not exist in cache 🙂
and thats the reason why some methods would return None!
what module should I use to make discord bots?
you could use discord.py or hikari or pincer or disnake or nextcord theres allot of libs
Also ik this is probably wrong, but i want it so users can respond to an embed sent by the bot
Would that work?
alright
I’ll check it out later
does discord support this message parameter in slash command?
You need to set the message object received by fetching it in a variable
?
Think so
🤔
Yeah something like that, sure.
channel.get_message
Thats the error
this is not a message id
Yeah? Do you see what's wrong?
When i copy the id
thats what i get in discord
retry
lol why is discord.py not on there
343944376055103488-971858380434047066 thats what i get for message id
what
971858745325932605 <- this is a message id
its probably not their because the list was probably made when it was archived so bluenix probably needs to add it
I think its just a problem on my end
Oh lol thanks for reminding me. I started this when discord.py was archived
oh ok
i called it
Thanks for your help @minor totem and @honest shoal It worked
rip TinyCord 😔 🙏 https://github.com/tinycord/Tinycord
I think I will un-star it, since it is archived
File "C:/pythonstuff/main.py", line 47, in ban
embed.set_thumbnail(url=felhasznalo.avatar_url)
AttributeError: 'int' object has no attribute 'avatar_url'
what
felhasznalo is an int
so i go and try change to str?
no it has to be a Member object
and how can i fix this
You should look up the ID in the cache
Also, does anyone know how to do a timer, e.g <user> Sent this message <time> (Hours/minutes/etc) ago?
the sequence of characters, which i demonstrate with x's <t:xxxxxxxxxx:F>
is a unix epoch timestamp
messages in discord.py include a created_at attribute
so you can fetch that and use that syntax to format it
icon_url = str(felhasznalo.avatar_url)
AttributeError: 'int' object has no attribute 'avatar_url'
async def on_raw_reaction_add(payload):
if payload.emoji == "\u2705" and reaction.message_id == 123:
await payload.member.send("Hey")```
this type of code is not working for me
Does anyone have any good examples of using gettext in discord.py? Throw off please - I can’t figure out how to make another language in the bot
to when a user reacts to a certain message the bot would dm him
try doing str(payload.emoji) instead of payload.emoji
gettext?
yea
and idk why
reaction not defined wtf
you probably mean payload.message_id...
Pylance is rightfully complaining here. Where is reaction?
thanks sir, lol one work can fuck all the code xd
but if i try to import normal command the output is
discord.ext.commands.errors.MemberNotFound: Member "859874942127439882" not found.
Is the user in the server As the bot?
await fetch_user(user_id, /)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Retrieves a [`User`](https://discordpy.readthedocs.io/en/master/api.html#discord.User "discord.User") based on their ID.
You do not have to share any guilds with the user to get this information,
however many operations do require that you do...
get_user(id, /)```
Returns a user with the given ID.
Changed in version 2.0: `id` parameter is now positional-only.
and i believe if u use discord.User it will work fine (the bot should have mutual servers with the user)
Read the error
don't copy 3 year old code on a library that isn't the same. Check the type of your ctx argument and reference the fork's documentation on it from there
ctx.guild.bans returns an async iter (in dpy), so you have to await it
not really sure what lib they're using, so can't really help 🤷
would anything bad happen if i didn't add a timeout for the bot to wait for someones reaction to an emoji?, e.g allowing them to click it 2 hours from when it was posted
is there any valid reason to run two bot instances?
is there something like on_channel_create
i have on_membeR_join and on_member_update. if member join the update works with the join, but its member update no join.
maybe you just really want to have 2 bots running at the same time lol
No.
thank you.
on_guild_channel_create
thx
You are missing Ban Members permission(s) to run this command.
Do u have permission to ban members?
give bot admin
what type of error handler are you using?
How do i do, if ctx author has a certain role id?
role = discord.utils.get(ctx.guild.roles, name="Admin") # Get the role
if role in ctx.author.roles:
and if u wanna send if they dont jus do
else:
Not name, i want the ID
You can also insert the id instead of the name
try using on_error, I'm not too sure if interactions have their own error handlers yet
hmm, try error.original then?
...
elif isinstance(error.original, ...):
...
if 2 channels have same name they wont create
first: inline, second: inline, third: not inline, fourth: inline
This would be my guess...
Is the fourth one set to inline?
embed=discord.Embed(title="Embed test")
embed.add_field(name="Field 1", value="1", inline=True)
embed.add_field(name="Field 2", value="2", inline=True)
embed.add_field(name=" ", value=" ", inline=True)
embed.add_field(name="Field 3", value="3", inline=True)
embed.add_field(name=" Field 4", value="4", inline=True)
embed.add_field(name=" ", value=" ", inline=True)
embed.set_footer(text="I've added empty fields too...")
It's a pretty hacky way to do it tho...
Also, for making embeds, I recommend this thing: https://cog-creators.github.io/discord-embed-sandbox/
embed=discord.Embed(title="Embed test")
embed.add_field(name="Field 1", value="1234567890123456789012345", inline=True)
embed.add_field(name="Field 2", value="12345678901234567890123456", inline=True)
embed.add_field(name="Field 3", value="3", inline=True)
embed.add_field(name=" Field 4", value="4", inline=True)
embed.set_footer(text="I've extended some stuff, so now it takes up more space with only two fields")
Not exactly practical either
so I need discord.py v2.0 beta . but I somehow cant clone the files from github
how do you limit the width of an embed like these guys have
string manipulation of some sort to either cleanly cut at spaces with a margin of like the first space within +/- 5 characters of a designated point, and if you go beyond that just abruptly cut it?
or soemthing similar
also why does it surprise me that “datecord” is a thing
im using msg = await bot.wait_for('message', check=check(ctx.author), timeout=20) this to wait for a message. How do I delete this users message after its been sent?
await msg.delete()
Nah
im use thats the way
the event would return a message object which thats the one you want to delete i supppose?
author is the message author
you just pass the function object
Its my bad
its fine its just library abstractions
I reassigned msg as something else later I missed it out
!paste
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.
https://paste.pythondiscord.com/osisocahek
Does anyone know how it would be possible to stop users from spamming the menu once it's put down?
I was looking for a way to add a cool-down, I still can't seem to find one that works here.
Not the command, the menu after it's placed.
say i want to put the file purchases.json in a folder named JSONS in the same directory as the bot.py, what do i need to change to allow the bot to find it?
with open('purchases.json', 'r') as purchases:
purchases = json.load(purchases)```
How can I get the user that pressed the button? My old bot was using interaction.user.id but that doesn't seem to work now
the directory of your with open() should be keeping in mind that your cwd is your bot's file directory. e.g
├─ some_folder/
│ ├─ command_file.py
│ └─ some_file.json
└─ bot.py
if I tried to access some_file.json from a command in command_file.py, I'd have to do something like with open(some_folder/some_file.json) instead of doing with open(some_file.json), because some_file.json isn't in the same directory as the bot.py, which is your cwd, therefore you'd just get thrown an Exception saying that the file couldn't be found
!d discord.Interaction.user
The user or member that sent the interaction.
!d disnake.Interaction.user
property user```
The user or member that sent the interaction. There is an alias for this named [`author`](https://docs.disnake.dev/en/latest/api.html#disnake.Interaction.author "disnake.Interaction.author").
!d disnake.Interaction.author
The user or member that sent the interaction.
those are the properties i really know so i see no issue how it wouldnt work tbh
Okay thank you!
oh wait, module discord has no attribute user
ty
it doesnt but it has a class named User
what does , * , do in this?
async def test55(self, ctx, *, firstchoice=None):```
so how do I fix?
consume rest, meaning that when executing [p]test55 a b c d e f, firstchoice would be a b c d e f
you're probably confusing yourself between instances and class attributes
if discord.interaction.user.id == self.user.id:
Thats my code, the self.user is the user mentioned in the command
interaction.user.id, not discord.Interaction.user.id cause that's a class attribute
I had it as interaction.user.id and it said it had no attribute user
your interaction param is of type discord.Interaction, but that doesn't mean that discord.Interaction is your interaction param
what type is your interaction param?
wdym?
do print(type(interaction))
not the class object it has to be an instance
or just read the error
Ignoring exception in view <View1 timeout=30 children=2> for item <Button style=<ButtonStyle.success: 3> url=None disabled=False label='Accept Coinflip' emoji=None row=None>: Traceback (most recent call last): File "/home/runner/Client/venv/lib/python3.8/site-packages/discord/ui/view.py", line 414, in _scheduled_task await item.callback(interaction) File "/home/runner/Client/cogs/flip.py", line 114, in _accept_ if interaction.user.id == self.user.id: AttributeError: 'Button' object has no attribute 'user'
profilembed = embed=discord.Embed(title=f"{member} | {final_pronouns}", description=f"snip", color=0xFF69B4)
embed.set_thumbnail(url=(pfp))
embed.set_author(name="Profile", icon_url=guildicon)
embed.add_field(name="**Age**", value=f"{agefinal}", inline=True)
embed.set_footer(text="Click the 📋 to see what other users say about me!")
embed.set_image(url="https://i.gyazo.com/88a987bc1c7febf4c54195dd00fbb512.png")
message = await ctx.send(embed=profilembed)
feedbackembed = embed=discord.Embed(title=f"{member} | (He/Him)", description=f"This section showcases feedback that users have left for {membermention}", color=0xFF69B4)
embed.set_author(name="Profile (Feedback)", icon_url=guildicon)
embed.add_field(name="**Positive**", value="2", inline=True)
embed.set_image(url="https://i.gyazo.com/88a987bc1c7febf4c54195dd00fbb512.png")
await message.add_reaction('\U0001F4CB')
def check(reaction, user):
return user == ctx.author and str(reaction.emoji) == '\U0001F4CB'
try:
reaction, user = await self.bot.wait_for('reaction_add', timeout=60.0, check=check)
await message.edit(embed=feedbackembed)
except asyncio.TimeoutError:
await message.remove_reaction('\U0001F4CB')
await ctx.send('no reaction in 60s (DEBUG).')
return
TypeError: remove_reaction() missing 1 required positional argument: 'member'
well interaction is a Button object
you probably named your arguments wrong
ty
and so you got confused
ill send full code but simplified
what do i put for member if its the bot sending it?
cause idk
confused as to why it can add a reaction without needing member but can't remove it
flip your button and interaction params, on recent versions they got turned around to match that of an application command
discord.Message.clear_reaction(emoji) instead of discord.Message.remove_reaction(emoji, member)
yep
okay ill try
does it need something other than "'\U0001F4CB'"
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: clear_reaction() missing 1 required positional argument: 'emoji'
nope
if you want to clear all reactions, you can do clear_reactions too
weird, py await discord.Message.clear_reaction('\U0001F4CB') should work then no?
discord.Message.clear_reaction is the class attribute, you gotta convert it given the context in which you're working on. e.g ctx.message.clear_reaction, etc
just connecting to the gateway right now and ill probably handle everything like READY tomorrow or later
File "C:\Users\allan\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "C:\Users\allan\OneDrive\Documents\mootbot\cogs\Commands.py", line 921, in _profile
await message.clear_reactions
TypeError: object method can't be used in 'await' expression```
class discord.Message```
Represents a message from Discord...
!d discord.Button.disabled
Whether the button is disabled or not.
discord.Button.disabled = true then to disable them?
yes
'Button' object attribute 'disabled' is read-only
You need the actual button instance. If it's inside a subclass, self will do
self.button.disabled?
@sick birch were going into the right direction😳
if its in a View subclass yes and you would need to specify what button
Hi okimii :D
hey hey :))
What's the time there??
9:45 PM
😅
Bru sleep
I just wake up its 7 16 am here
ah good morning :))
Good evening :D
Or night
more like night because in 3 more hours its already midnight here😭
We say good night when the person is going to bed
Ig
yeah but its said to be polite as you say to someone good morning to greet them so when you say goodnight its like saying bye to them as you say hello to the sun and bye to the sun at night
its just how people mainly think about it, but its just what the word suggests
Ohk
anyways hyd?
💀 online classes in 10 min
dang i had no school today so i finished my bare bones gateway implementation
bare bones gateway implementation wt is that
just the basics of my gateway client implementation
gateway client means ;-;
the client that handles the apis gateway which in this situation is discords gateway!
Ohh
so it would handle events like MESSAGE_CREATE
wow
Message create?
yeah its the event that gets dispatched when a message is created
e.g on_message is the function that gets triggered in this event
um
so u can customize
customize by?
Like custom events?
wdym by custom events?
uh
👁️👁️
(idk about gateway an api )
I'm trying to say
uh can't explain
😭
are u trying to make a fork of discord.py?
nah
..
im trying to make a wrapper from scratch
how do i get a guilds booster role name
um which api wrapper
are you saying that to me?
Yes
wdym by which api wrapper
means
Ig I'm thinking wrong
Nvmd
!d discord.Guild.premium_subscriber_role
property premium_subscriber_role```
Gets the premium subscriber role, AKA “boost” role, in this guild.
New in version 1.6.
it can return Role | None fyi
I'll just go and learn about apis
So I can understand
you mean apis? and you can just read the documentation of discords api and gateway
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
yo, whats the syntax for auto-complete in disnake?
ah wait its in the docs nvm
Ok so @slate swan discord.py is the easy part of that ?
discord.py wraps the api so it makes things easier
It's a third party?
Yes
an api wrapper wraps the api of your choice e.g theres a restaurant where you need to specify whats your name your order by ingredients how you want it and the waiter talks only Portuguese but you talk english so an api wrapper makes a menu for you with options in english so its easier for you and then the menu talks to the waiter in Portuguese
yeah its third party but it is featured in the documentation with disnake and other forks iirc
Okay
Now I understand
the menu is like a middle man
Like communicator
Between me and chef
nah
that would be more the api
apis communicate from something to something else
Ye I mean waiter
so like a translator
its a quite confusing topic
I'm hacked
Ig
what
how would i access the self parameter in an auto complete function? like i got this function:
async def autocomplete_tags(self, inter: disnake.ApplicationCommandInteraction, user_input: str):
return [i for i in self.tag_list if i.lower() in user_input]
and have it in my commands like this:
async def tag(self, inter: disnake.ApplicationCommandInteraction, tag: str=commands.Param(autocomplete=autocomplete_tags)):
bu tthis jus raises an error
TypeError: Tag.autocomplete_tags() missing 1 required positional argument: 'user_input'
Ye
My volume just go up down without my touch

are you sure its not a bug?
Also it pops open with chrome something
or something else? or have you been in places where you shouldnt be at🤨
I think zoom is hacking my device
kill the task with task manager
I'm on android
do a clean reinstall to be safe 👍
oh
Also
or just yeet your phone
I think my pc is hacked tooo
now youre just playing with me🗿
Yesterday when I try to close the Google it shoe continue download or exit where I'm not downloading anything
Bro I swear
are you sure it was updating itself😭 💀
Yes
I just saw that
:(
I think it's bug
Of update
😭
you can just check your downlosd history just press ctrl+j
Already
Nothing there
I have checked every single task google history and all I can check
it probably was just updating itself
No!
Also in my android yesterday it was downloading something but I'm not sure cuz it would be play store update
Come ot ot2
Else someone will do ot
ping me in a channel
and you should check your devices mr
!e
x = "I am a boy"
print(x)```
Lol
or you can just print the string without the var
;))
Actually showing someone something
No big deal doing so
yep
Trying to get my friend to get a copy of this bot privately
!src
Suggest more topics here!
Yeah. Got the source code but getting it running great difficulty
probably to optimize old code base. the event decorator
Traceback (most recent call last):
File "C:\Users\thoma\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "c:\Users\thoma\OneDrive\Desktop\discord server bot\Bot2.py", line 122, in on_raw_reaction_add
await payload.member.add_roles(role)
File "C:\Users\thoma\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\member.py", line 777, in add_roles
await req(guild_id, user_id, role.id, reason=reason)
AttributeError: 'NoneType' object has no attribute 'id'```
code?
probably a get method is returning None
..
i like when exceptions are raised...
that was discatsharp
a c# discord api lib that was (possibly unintentionally) sending tokens to the devs website
Really?
how do i write the number of servers that have my bot?
!d discord.ext.commands.Bot.guilds
property guilds```
The guilds that the connected client is a member of.
What is it?
Lemme show
File "C:\Users\Dom\Desktop\python bot\main.py", line 29, in on_ready
bot.load_extension('cogs.leveling')
NameError: name 'bot' is not defined
@spring flax
U defined the bot?
Replace Bot with Client
So then do client.load_extension
wdym?
Yes
import discord
ye, it's normal
if u mean that the import discord is not highlighted properly, its because u haven't used discord in ur code
File "C:\Users\Dom\Desktop\python bot\main.py", line 29, in on_ready
client.load_extension('cogs.leveling')
File "C:\Users\Dom\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ext\commands\bot.py", line 672, in load_extension
raise errors.ExtensionAlreadyLoaded(name)
discord.ext.commands.errors.ExtensionAlreadyLoaded: Extension 'cogs.leveling' is already loaded.
i changed to client and have this
thats because u loaded cogs.leveling in ur code b4 that
i woudnt load cogs inside on_ready
Check the status of the users in the server (discord.Member.status)
If the status is discord.Status.online, they're marked as online
Anyone mind checking #help-honey
People will answer there when they can
No need to come in other channels to ask for people to go in the most active help channels
Being patient is part of being a developer 
how do i make button?
Library?
like
What library are you using
replit
Not a library
oh
discord.py, nextcord, disnake, ...
py
yes
There are examples here, you can take a look at them: https://github.com/Rapptz/discord.py/tree/master/examples%2Fviews
Make sure you install the version 2.0 with
pip install git+https://github.com/Rapptz/discord.py
or pip3, it may vary
um i just asking for button
thx
!paste
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.
Hey, is anyone able to help me with this error code?
I've tried to fix it, can't seem to get the proper fix.
Line 29-30
06.05 06:09:55 [Bot] AttributeError: 'Suggestion' object has no attribute 'bot'```
https://paste.pythondiscord.com/mejubugafu
like what u making?
It’s a suggestion command with a modale
Oh, sorry. Lol
I’m just wanting them to type /suggestion and it inserts the suggestion into a channel that’s already made.
Mhm, I’m wanting that
Are you sure? I’m using Nextcord and cogs. I can try but last time I used that it gave an error
dm?
That’s fine
@commands.slash_command()
async def build(
self,
inter: disnake.CommandInteraction,
gun: str
):
await send_build(inter, gun)
logger.warning(f'A build was used for {gun}')
For the logger.warning, it seems to be writing the same line in the log file several times each time the slash command is used, why?
@spring flax how do i make button when u press it to make private channel where that person who pressed button can type their report?
how do i write user tag?
in code?
yes
{member.tag}?
wait
explain me what u wanna to make
user info
and I just need to add a tag
without nickname
for the name + discriminator, just do str(member)
only discriminator
user.tag i think
@spring flax
just be patient
No
!d discord.User.discriminator
The user’s discriminator. This is given when the username has conflicts.
!d discord.Member.discriminator
property discriminator```
Equivalent to [`User.discriminator`](https://discordpy.readthedocs.io/en/master/api.html#discord.User.discriminator "discord.User.discriminator")
It's discriminator
thx
!d discord.ui.button
how do i make message to have text and gif down
like i wanna to put this gif
under message
how can i get the cog a command is coming from
uh
is there any way to wait for a reaction on a message that is sent by a user from before the bot was even online?
how do i make my bot to be 24/7 online?
host is somewhere
lol where?
VPS or other hosting service
k
how to define a bot? if this user is not a bot, then writes false
hm?
wait
are u working on replit?
бот - bot
you can use replit
yes im using it
you just gotta trick it into hosting it for free
turn it into a website and ping the website every 5 mins or so
itll stay up forever that way
!d discord.Member.bot

