#discord-bots

1 messages · Page 594 of 1

heavy heath
#

Can anyone tell me why this isnt working please? Im trying to send a video automatically when someone joins, ive tested it in a command and it works, but when i try to automate it, it doesnt

#

heres the code:

#
@client.event
async def on_member_join(member):
    channel = client.get_channel(908722937077588048)
    await channel.send(f'Welcome to the server, {member}.')
    await channel.send(file=discord.File(r'C:\Users\c6tan\OneDrive\Desktop\UtangoRun\anotherone.mp4'))```
#

What do you mean?

slate swan
#

Error?

heavy heath
#

Doesnt give an error, just nothing happens

slate swan
#

Do you have the members intent enabled?

heavy heath
#

I did, and it still wouldnt work

slate swan
#

Probably not since it worked with a command

#

Where and how have you enabled the intent?

heavy heath
#

Just at the top of my code, next to where i set my prefix and token etc

boreal ravine
heavy heath
#

intents = discord.Intents().all()

slate swan
#

Head over to your bot and enable the members intent switch

#

Example:

#

Just enable the server members

heavy heath
#

yeah i have that on already

slate swan
#

Well you would get an error instead of nothing

heavy heath
#

Hm, well i have it enabled and i dont get an error

#

oh hold on, 1 sec

slate swan
#

Maybe you have an error handler that prevents error from logging

heavy heath
#

yeah i do, just disabling that atm

slate swan
#

If it says cannot use on NoneType object

#

Then use fetch_channel()

heavy heath
#

Alright, i disabled it and i still dont get an error at all

slate swan
#

hmm weird

#

Not getting anything either means it worked or you don't have the intent (which you have)

heavy heath
#

Damn thats so weird

#

i have no idea, i have intents, no error handler and im still getting no error msg

slate swan
#

Kind of dumb question, but is a new member joining the server?

heavy heath
#

Yeah i have my alt acc joining

slate swan
#

Just wanted to make sure

heavy heath
#

This is so annoying lol

heavy heath
#

i got an error finally

slate swan
#

Oh wait

heavy heath
#

Oh waitttt

slate swan
#

You did client.channel

heavy heath
#

yeah lmao

slate swan
#

It's just channel.send

heavy heath
#

i added that a few mins ago to test, lemme try now

slate swan
#

Oh ok

heavy heath
#

YEEEE i got it

#

thank you 🙏

slate swan
full valley
#

Anyone know whats wrong:

#

oh hold up

#

Im an idiot

heavy heath
# slate swan <a:CS_PepeTip:744984672492322986>

Also, its slightly unrelated to what i just asked, but would you know how i can say "welcome" as the title of the video, instead of sending it after the video, since the video takes a little time to send?

#

Like how we can upload files and send a message with that file, and kinda attach them to eachother, how would i do that with a bot message?

slate swan
#

Just do

await ...send(content="your message", file=the_file)
full valley
#

How do I mention the author of the message

summer flume
#

ctx.author

full valley
summer flume
#

ctx.author.mention

full valley
#

ty

summer flume
#

np

cinder horizon
#

so i got this osu command where user does s/osu add <username in osu> and bot saves it n stuff...but once i restart iz bek to square one...so can someone help m econfigure sm json files for it please

slate swan
#

!d

unkempt canyonBOT
slate swan
#

how do i use this

#

Click the buttons?

#

@slate swan yes, but i want to go specific bits, not these

#

W8 can u tell what you want? Or im missing something?

slate swan
#

Is even the bot allowed to do it?

slate swan
#

im testing some stuff with what i can do

#

Well you can change pfp of dis server

#
server = self.bot.get_guild(serverid) 
await server.edit(name="test" )
#

If you are using cogs, If not remove self

slate swan
#

Then try icon="urltoicon"

slate swan
#

thanks

cinder horizon
#
embeds.append(discord.Embed(color=0xf80707).from_dict(entry))
```y dont this work...the color i mean
slate swan
cinder horizon
#

one sec

#

nope

#

it doesnt

slate swan
#

embed without title or description

#

seems nice

boreal ravine
cinder horizon
boreal ravine
cinder horizon
boreal ravine
#

and idk JSON well but i know enough that JSON is not database for you to use

cinder horizon
#

code where we add the username? or the pymongo thingy?...coz it errors wen i initiate...like wen i define mongoclient itself

cinder horizon
#

iz in the poetry lock file...not in code

boreal ravine
#

huh

#

how can a poetry file

#

cause an error

#

@cinder horizon show full error

cinder horizon
#

one sec

slate swan
#

Can anybody say my mistake here?

bitter perch
#

Capitalization matters.

slate swan
#

python arguments are case sensitive

#

command_prefix, not Command_Prefix

#

ok

slate swan
#

u didn't even change it

#

I changed

#

what did you change

bitter perch
#

...

#

it's called command_prefix

#

capitalization matters

slate swan
#

ok

slate swan
#

don't tell me you already have all that code below and don't manage to get through the definition of Bot

boreal ravine
#

uhm I think your password is kinda leaked and i also think u wrote the password wrong or smth

slate swan
#

I can see the P is still a capital letter

slate swan
#

it's fully lowercase

slate swan
slate swan
#

command_prefix

boreal ravine
#

install dnspython3 or smth

#

i gtg

summer flume
#

Hi, im using numpy.random for a giveaway command but how can I do, for example: there are 30 users who joined in a giveaway (by reactions) and I want to return one winner or more winners (who are not the same user) from the reactions using this package by the code below but there is an error: ValueError: 'a' and 'p' must have the same size. How to do to eliminate the 'p' which is the probability because it doesnt work with the probability added or removed by me if there are more than x users who joined the giveaway.

onewinner = np.choice(users, size = 1, replace = False, p = probability) probability = [0.5, 0.2, 0.3, 0.7, 0.6, 0.9, 0.4, 0.1, 1.0, 0.8] users = await new_gaw_msg.reactions[0].users().flatten()

slate swan
#

how do i force a field in embed to be on next line instead on being right?

summer flume
#

emb.add_field(name = "", value = "", inline = True)

final shard
#

In discord.Member you get someone by pinging them, but can you do it with a user's ID?

#

like $ping USER_ID instead of $ping @SomeoneRandom

tawdry perch
#

<@userid> @final shard this works

slate swan
#

How can i make a error handler for a command not found?

tawdry perch
slate swan
heavy heath
#

Hey, i have an issue. My bot is in multiple servers, but im trying to set up a welcome message for just one of them... So ive done that, but now whenever someone joins one of the other 20 servers the bot is in, it gives a notification in the server i want to use the message for

#

the code is:

#
@client.event
async def on_member_join(member):
    if guild == 908449309224206377:
        channel = client.get_channel(908722937077588048)
        await channel.send(content=f"Welcome to the server, {member.mention}", file=discord.File(r'C:\Users\c6tan\OneDrive\Desktop\UtangoRun\anotherone.mp4'))
    else:
        return```
#

obviously the "if guild == (guild id):
doesnt work, but im trying to find a way to do that and i cant figure it out

summer flume
#

isnt if guild.id == ...?

heavy heath
#

I thought so too, but then i get "unresolved reference 'guild'"

short radish
#

what even are you referencing by guild?

heavy heath
#

Nothing, i mean im trying to figure out how to only post that message if a user joins THAT specific server

short radish
#

ah

heavy heath
#

Oh that might work hold on

vale wing
#

How to build yt new video notifier like in mee6

vale wing
#

Are there any guides or smth

heavy heath
#

Thanks everyone

last shuttle
#
for channel in ctx.guild.channels:
            await channel.set_permissions(ctx.guild.default_role, overwrite=None)

when disabling overwrite; i was expecting for the channels permissions to return to back how it was. instead it makes it so every channel has the same perm

vale wing
#

Have you stored how "it was back"?

glass token
#

Write the definition of a function power to, which receives two parameters (x and y
respectively). The first is a double and the second is an int. The function returns a
double. If the second parameter is negative, the function returns zero. Otherwise
it returns the value of the first parameter raised to the power of the second. Call
the function with the values 23.1 and 7 respectively. At the end print the function’s
result. (Note: Python’s built-in functions are not allowed.)

vale wing
#

It just removes the overwrites for everyone role for every channel

slate swan
#

reportable question mark

#

2300 messages in 30 seconds

vale wing
last shuttle
# vale wing It just removes the overwrites for everyone role for every channel

oh, well. when doing this:

for channel in ctx.guild.channels:
                await channel.set_permissions(ctx.guild.default_role, send_messages=False)

i want it so when im using overwrite in the thing i sent over there it returns the channel to its defaults. (ex: if announcements has the @ everyone roles send_messages off it'll stay like that and not go back to /)

vale wing
last shuttle
#

iiight

glass token
#

ı won't do it again

vale wing
#

@last shuttle seems like you are doing everything alright. So if I understood you right - you want to delete overwrites for a role for a channel?

last shuttle
#

yeah

#

im trying to make a lockdown command, so when im trying to disable it puts the channel back to its defaults

#

so if announcements has the everyone role send messages off it'll stay like that

vale wing
#

Uh be careful it might unlock some rules channels automatically

#

@last shuttle and what does that code actually do, I didn't get it

#

Instead of what it is supposed to do

last shuttle
vale wing
#

Ok

last shuttle
last shuttle
#

i wanna make a simple enable/disable lockdown command

vale wing
#

Enable is already made I think

#

Disable would simply be

for channel in ctx.guild.text_channels:
    await channel.set_permissions(ctx.guild.default_role, send_messages=None)```
#

Sorry if I misunderstood but seems like this is the thing you want

last shuttle
#

alright, ill try it

#

nope, still not

vale wing
#

And you want this perm to be?

last shuttle
#

to be false

#

since its default was false

vale wing
#

Then you need to store data of what permissions there were before the lockdown

last shuttle
#

alright so do i maybe put it in an array

#

or is that gonna issue in like different servers

#

actually, yeah. wont that issue in multiple servers?

vale wing
#

You may add a simple list and put IDs of channels that had it set to false before a lockdown, when unlocking just exclude them using condition

vale wing
last shuttle
#

alright, but is it possible to make a server-exclusive array?

#

whats a dictionary

vale wing
#

dict

last shuttle
#

i dont wanna pay for databses n all that

vale wing
#

Databases are free

tawdry perch
#

this .

vale wing
#

I don't mean server ones

tawdry perch
#

postgres is server based right? And it's free as well (afaik)

vale wing
#

You could just use sqlite, will sure need some effort to learn SQL a bit but totally worth it

last shuttle
#

ok

vale wing
vale wing
last shuttle
#

would you be able to aid me within it though?

#

is this hosted on my pc or like through a lib

vale wing
#
unlock_ignored = []

@bot.command()
async def lockdown(ctx):
  for c in ctx.guild.text_channels:
    if c.overwrites[ctx.guild.default_role].send_messages == False:
      unlock_ignored.append(c.id)
    else:
        await c.set_permissions(ctx.guild.default_role, send_messages=False)

@bot.command()
async def unlockdown(ctx):
  for c in ctx.guild.text_channels:
    if not c.id in unlock_ignored:
        await c.set_permissions(ctx.guild.default_role, send_messages=None)
  unlock_ignored.clear()```
#

@last shuttle

last shuttle
#

is this using sqlite or am i dumb

vale wing
#

You can store unlock_ignored in the way you want

last shuttle
#

oh alright

vale wing
last shuttle
#

but is sqlite or dict better?

vale wing
#

It is just a variable

last shuttle
#

what should i be using instead

vale wing
last shuttle
#

im planning it for like.. multiple servers

vale wing
last shuttle
#

so can i use sqlite instead?

vale wing
#

You will need to learn the basics of SQL

last shuttle
#

and if so how does sqlite work

vale wing
#

It's kinda uh complicated

last shuttle
#

i mean like

#

is it a lib, pc hosted, etc?

vale wing
#

Library

last shuttle
#

hmmm

vale wing
#

And database is just a file

last shuttle
#

got it

#

can you help me really only set up this?

full valley
#

Hey guys anyone here good with dictionaries 🙏

vale wing
#

I barely know it myself sorry

last shuttle
#

damn

#

aight, im gonna go learn it.

vale wing
# vale wing Yeah

@last shuttle I mean I know it but I am not sure I'm doing things in the right way

#

I created kind of

#

Module

#

For easier managing the databases, but the issue is I added no doc since only I am using it

#

I could give you the code if you want

full valley
# vale wing Yeah

So I'm trying to make a q system, where members can !q, once the queue reaches 6 players, the data is saved for other purposes and the queue resets.

last shuttle
#

uhh mayb later but what lib do i use

full valley
#

I was thinking of using a dict with like {userid: [members]}

vale wing
#

import sqlite3

last shuttle
#

ok

vale wing
#

Like ID of the user who made the queue should be the key?

last shuttle
#

what should i put like after the import, are there any like neccesary functions to be run

vale wing
#

I will better send you a module, so you can see it by yourself

last shuttle
#

ok

vale wing
#

It is not really huge

#

But contains all the essentials you need

last shuttle
#

can you put it in a haste/pastebin?

full valley
vale wing
full valley
#

so there are 6 players for every game id

vale wing
#

So what exactly do you want to know, how to save the dictionary?

#

Or how to make it as well

full valley
#

Yeah so I just want to be able to have multiple q's in the same channel

#

but the player information is stored so after the game is complete, a win/loss can be reported and the players rating is adjusted in the database

#

I guess I want to know how I would save the player id's and then be able to recall them later for database purposes

vale wing
#

It was in built into the bot utils module so some imports might be useless

last shuttle
#

is this like a module i can use and just call functions in or

vale wing
#

You will need to edit it a bit

vale wing
last shuttle
#

aaaaaa

#

what would i need to change

vale wing
#

If you are going to store the data just for a few servers its better to use json or pickle

#

Databases are uh recommended but not really necessary if your bot is not serving more than 10 guilds

last shuttle
#

yeeeeeah ill just do that.

#

since im planning to learn js sometime soon anyway

vale wing
#

Once my bot got to 90 guilds I had to recode it from a dumb pickle database I created 💀

last shuttle
#

lmao

vale wing
#

It was like this

#

Don't tell me how dumb I am I already know

last shuttle
#

oh god

#

honestly

#

i should prob just learn sqlite

#

since i wanna make like a warn system n all that

#

but ill do it later

full valley
#

i’m starting to go crazy

bronze pilot
#

Aside like, extract values after the program is finished?

#

Or just generally how to extract values from a dictionary

vale wing
last shuttle
#

also, exe what do you use to host your bot?

#

is it paid or like

bronze pilot
#

Oh if you want to save dictionary data I'd go for JSON

vale wing
bronze pilot
#

Seems perfect for this

last shuttle
#

whats that?

vale wing
#

Server

last shuttle
#

is it paid

vale wing
#

Yeah

last shuttle
#

aw man

vale wing
#

It's 3$/mo, not very expensive imho

full valley
#

Idk if I need a database for that, I don’t think I do.

vale wing
#

Yeah you don't really need it

#

Simple pickle file or json would do the job

bronze pilot
#

Yes

full valley
#

But the catch is that there could be infinite number of q’s, since after one q is full, I want another q to start

bronze pilot
#

Then you create separate IDs for each queue and use those are the dictionary key

full valley
#

but the values are still saved for previous q game id’s

vale wing
#

Have you tried to make the system by yourself yet?

full valley
#

yes, just with lists though

vale wing
#

Could you show the code?

full valley
#

Well I’ve got a simple q system, haven’t stored game id’s or allowed for several q’s yet.

bronze pilot
#
{
  "queue1": {
    "user1ID": 123123123,
    "user2ID": 345345345
  },
  "queue2": {
    "user1ID": 12132524
  }
}
#

But for each "queue1" or "queue2" etc you can create your own key

#

This is just a suggestion

#

off the top of my head

full valley
#

That’s exactly what i’m after

bronze pilot
#

perfect 😄

vale wing
vale wing
full valley
bronze pilot
#

You can use json.load() and json.dump() to read from and write to JSON files respectively

vale wing
#

@full valley I will try to show you how to do the thing you want

#

Wait for like 5 mins

full valley
bronze pilot
#

Yep 🙂

#

I had to as well but it won't take long

vale wing
#

Just use pickle lol

#

Shouldn't cause issues on small projects

bronze pilot
#

One thing to note is that JSON represents data a little differently than how Python does with dictionaries, but the json methods for reading and writing convert the values accordingly

vale wing
#

But don't go create a database with it like me 😂

bronze pilot
#

AFAIK pickle doesn't generate a readable file like JSON does, no?

#

I feel that JSON would be better here cause you'll notice fuck-ups in the file

last shuttle
#

hey uhhh exe can you help me setup sqlite for my funny thing so i dont have to go through pain after i release my bot troll

bronze pilot
#

but with pickle, and ofc only if what I said is the case, you'll be implementing print statements for debugging which could be avoided if you use JSON

#

Unless what pickle writes to the file is exactly what is in the Python dictionary, idk

#

I say use JSON 😄

vale wing
#
try:
    games[gameID].append(ctx.author.id) #add to existing key if exists
except KeyError:
    games[gameID] = [ctx.author.id] #create new list with a key if not```
Basically how to add a user to a game @full valley
#

@bronze pilot json is indeed better if you want to read your file by your own eyes without additional features, but it also has several disadvantages, like it can only store int, float, string, and some other basic types, keys can only be str and you can't store python objects

bronze pilot
#

Or you could use python games[gameID] = [ctx.author.id] and implement a gameID that is based off the past gameID

vale wing
#

Pickle is bad af in case your bot is split into modules

bronze pilot
vale wing
#

But it's better to use a db then

full valley
#

I want game id’s to just count upwards by 1 each time preferably

bronze pilot
#

So you can do this

last shuttle
#
@client.event
async def on_ready():
    db = sqlite3.connect("main.sqlite")
    cursor = db.cursor()
    cursor.execute = ('''
    
    ''')
    print("Bot has started succesfully")

what should i add here
( i want my bot to have like.. lockdown channel perms and warns)

vale wing
#

The thing you are going to do will require storing a bit of more data

full valley
#

Bit of a 4am mind blank, what is games[gameid]

bronze pilot
#

The dictionary is games and gameid is the key you are indexing by

vale wing
#

Sry I gtg or I won't do any of my homework with this all lmao

#

Came to ask how to make a yt video notifier

full valley
#

Nah all g, thanks for the help

full valley
#

so you can append to dictionaries, I really gotta go relearn them

#

I just never use them

#

ty all for the help

bronze pilot
#

np

#

Do look into dictionaries, you need to understand them better before you use them

#

They don't have a .append() method

#

Dictionaries don't allow duplicate keys, so if you just say my_dict["hello] = 2 and "hello" is not a key in the dictionary, it will create a new key:value pair as "hello":2.

#

If there is a "hello" key, it will overwrite that key's corresponding value with whatever you've put after =, in this case it is 2

waxen granite
#

How do i get the difference in dates

#

Like 14-11-2021 - 13-11-2021 == 1

tawdry perch
#

Turn it to date time object?

honest elm
#

What is a good way to make bot stay online?
Is heroku good?

kindred epoch
#

Get a vps

honest elm
#

Which one?

#

Am tryna figure out what

kindred epoch
#

This all are vps

honest elm
#

Kk, ty

slate swan
sick birch
last shuttle
#

are there any like free alternativse to vps and raspberry pi

kindred epoch
last shuttle
#

damn

kindred epoch
#

aws gives 1 year free but it requires cc

last shuttle
#

what is the cheapest vps i can get

#

that connects to git

kindred epoch
#

use google

last shuttle
#

and i found this too

kindred epoch
#

idk what that is

last shuttle
#

some hosting site i found

#

earlier today

#

from this

slate swan
#

You won't go far with 128mb of RAM

pliant gulch
#

Seems like a shady service

slate swan
#

i am trying to make jackpot but it doesnt work

#

when i get 3 equal items

#

its not jackpot

normal folio
slate swan
#

Yes.

last shuttle
#
for users in ctx.guild.members

would this work

#
for users in ctx.guild.fetch_members(limit=None):
                print(users)

tried this (yes intents are enabled) and it dont work

cloud folio
#

Hi, how can i add 🇺🇸 as a reaction to message in discord.py
I know how to add normal emoji, but i can't copy this emoji for some reason, it will just paste "us". (emojipedia)

desert halo
#

how to send direct message to user from self_bot

kindred epoch
slate swan
#

Then use .add_reaction(emote) on a Message object

slate swan
#

They eventually meant self.bot...

#

Let them answer to the question that got asked above

slate swan
last shuttle
#

alright i figured out my issue on that;
but now, how can i change a specific members permissions?

slate swan
#

How do I get a guild's id and use it

last shuttle
#

also another thing; would changing every single members permission in a server overload anything?

last shuttle
slate swan
last shuttle
#

try this

#

took me a google search, haven't read through it

last shuttle
#

seems like it'll work yeah;

await client.fetch_guild(guildid)
#

i believe

slate swan
#

aight thanks

kindred epoch
last shuttle
#

already helped him

#

if i were to change every members permissions at once will that violate any tos?

last shuttle
#

alright, how owould i change a members permission?

cloud folio
cloud folio
last shuttle
#

nvm actualyl

slate swan
cloud folio
#

mmm

#

?

kindred epoch
#

🇺🇸

cloud folio
last shuttle
#

is this a good way to route this?

            for member in ctx.guild.members:
                if not member.bot:
                    pm = ctx.channel.overwrites_for(member)
                    await ctx.channel.set_permissions(member, send_messages=not pm.send_messages)
kindred epoch
#

its \🇺🇸

slate swan
#

Copy that...

cloud folio
#

ok

kindred epoch
#

woah

cloud folio
#

and if i put it in vsc i got this

last shuttle
#

that wont work

#

nvm

cloud folio
#

no reaction appeared in discord

last shuttle
#

how would i change a members permission and not only for a certain channekl

#

eh whatever ill do it my old way

kindred epoch
#

wdym by rank names

#

oh

#

wait

#

make a dict of the rank names according to the ints

#

and then get what the rank int is from the db and then use it to get the rank name from the dict

#

so if the fetch returns 5 and you define the dict as rankname, you do rankname[5] it should return the rank name corresponding to 5

#

im hoping that you know how to use dicts

#

or just save the rank names in the db, idk why you're not doing that, makes it more simple

smoky carbon
#

import sys

import pygame

def run_game():

pygame.init()
screen = pygame.display.set_mode((1200, 800))
pygame.display.set_caption("Alien Invasion")

bg_color = (0, 255, 0)

while True:
	
	
	   for event in pygame.event.get():
	   	  if event.type == pygame.QUIT:
	   	  	sys.exit()
	   	  	
	   	  	screen.fill(bg_color)
	   	  	
	   pygame.display.flip()

run_game()

#

hmmmmmmmmmmmmmmm

#

my gosh i am dumb

last shuttle
#

noticed that you are trying to get a rich presence for vsc, theres a plugin called "discord presence" on the vsc extensions tab.

#

use that instead

#

np

#

itll look similar like mine, if you check my acc.

#

ye

#

nice

#

have fun :D

last shuttle
#

aye @vale wing sorry for the ping but how did you setup that pickle thing you were talkin bout?

dusk dust
#
from discord.ext.forms import Form
``` don't work.... what I have to do?
wicked atlas
#

I don't know any that have a forms extension

wicked atlas
#

What do you mean by 'don't work'? Not much to go off there

wicked atlas
#

And you've installed it, right?

heavy heath
# dusk dust

i uninstalled and reinstalled and it worked for me

#

i had that same issue

desert halo
#

nerd moment 🥸🤧🤡

slate swan
pliant gulch
stoic bridge
#

how do i create a while loop while my discord bot is running?

desert halo
#

bot_run = Thread(target="func_with_bot.run")

#

bot_run.start()

stoic bridge
#

o but is there another way other than threads?

desert halo
#

if you want to wait until your bot shut down use bot_run.join after all

#

why you don't like threads

stoic bridge
#

not that i dont like it

desert halo
#

I guess you have at least 4 threads

stoic bridge
#

hm

desert halo
#

asyncio then

last shuttle
#

is heroku good to use or is there some better free

desert halo
#

pythonenywhere

#

any*

desert halo
#

I really recommend you to use all power of your cpu

#

you have to like threads

simple kettle
#

Does anyone know how to set cooldown for commands, i dont want the cooldown to be shared though

desert halo
#

discord py docs for help

#

i really don't know why many of people here dont know how to goople

#

google*

pliant gulch
#

The error is happening because data is not truthy, and you set the names variable in there

desert halo
#

for not simple help I guess

simple kettle
desert halo
#

Its so awkward for me

pliant gulch
#

Its not truthy because fetchall probably returned an empty list or something like that

simple kettle
pliant gulch
#

You should set the names variable before you fetchall, then reassign inside of the if statement

#

Otherwise if it isn't truthy you still have names set,

dusk dust
simple kettle
#

What does BucketType mean

pliant gulch
#

You just set the variable before hand

#

Set it to a default value and then reassign if data is truthy

kindred epoch
simple kettle
#

oh ok thanks

outer violet
slate swan
boreal ravine
slate swan
boreal ravine
#

random

slate swan
#

Your grammar isnt correct

boreal ravine
#

Youre*

slate swan
#

Why you edited ityert

final iron
#

You're == You are

boreal ravine
#

I never knew that

#

thanks for telling me

slate swan
rare saddle
#

Please tell me what can I violate from the Developer Policy if my bot has only functions for music and changing the prefix? This is the second time my verification has been rejected

rare saddle
unkempt canyonBOT
#

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)
boreal ravine
#

get rekt

slate swan
#

Against yt tos

slate swan
final iron
outer violet
boreal ravine
rare saddle
boreal ravine
pliant gulch
pliant gulch
rare saddle
final iron
boreal ravine
#

no

slate swan
#

Some music bots got shutdown cuz they use yt music which its against their tos

pliant gulch
#

If your bot were to stream copyrighted music that you haven't bought a license for that would break copyright laws

slate swan
slate swan
#

Its unlikely you face any serious punishment for doing so

#

Yeah but if you do make money out of those songs then it is serious

#

No like from the music

pliant gulch
#

Doesn't mean you should be willingly and knowingly breaking copyright laws

slate swan
#

Yeah

tiny ibex
#

Asking the same question again how to restrict lavalink to stop playing from youtube

#

Anyone please

#

I want it just to play from SoundCloud and other sources

tiny ibex
#

From lavalink node?

tiny ibex
#

Sure sir

pliant gulch
# tiny ibex ??

Unless everything from soundcloud you play is not copyrighted you would break the copyright laws

#

It doesn't matter if its from youtube or any other music streaming service

pliant gulch
#

And unless they bought licenses for all the music they play they are breaking the laws

#

Just because you see other people do it doesnt mean its ok to do

tiny ibex
boreal ravine
#

whats RIAA?

tiny ibex
#

😶

#

72 trillion crazy shit

#

How did they even pay

#

72 trillion

#

Like WTF

#

😶

slate swan
#

!e py word = 'a' l = ['a' , 'b'] if word in l: print('here')

unkempt canyonBOT
#

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

here
slate swan
#

^ use in

slate swan
#

i have a function that sends a message in a channel when someone gets given roles how do i stop it from spamming and only have it send 1 message in total for all the roles its being given?

pale zenith
#

on_member_update checks when a member is updated

#

i guess keep track of what the roles added in the seconds prior and bunch them up in a single message.

rare saddle
#

Please tell me where you can find the application ID for discord? To launch activities in the voice channel

unkempt canyonBOT
#

The snippet you tried to send was too long. Please see #bot-commands for the full snippet.

boreal ravine
#

Wut

slate swan
#
    async def abc(self,ctx, user: discord.Member,who,what, proof , proof2 = None):

How would I take the whole string for "what" and not just the first word? Since its in the middle yk
Basically I want it to read till proof, proof is a link so maybe that could help? idk

boreal ravine
#

what the

#

I dont understand what you mean

slate swan
# boreal ravine I dont understand what you mean

uhh right now what will only take 1 word so if I do
??abc user.id 123 345 hi https://
Then user.id = user
123 = who
345 = what
hi = proof
https:// = proof2

That is how it would work rn.. But I want "345 hi" to be what

I can ask the user to put in quotes but I dont want to do that.. Its confusing

boreal ravine
#

huh

#

🤨

unkempt canyonBOT
#

Hey @slate swan!

Uh-oh! It looks like your message got zapped by our spam filter. We currently don't allow .txt attachments, so here are some tips to help you travel safely:

• If you attempted to send a message longer than 2000 characters, try shortening your message to fit within the character limit or use a pasting service (see below)

• If you tried to show someone your code, you can use codeblocks
(run !code-blocks in #bot-commands for more information) or use a pasting service like:

https://paste.pythondiscord.com

slate swan
#

GUYS I HAVE A WEIRD PROBLEM ,

when i run my code in vs code it gives me an error, but when i run the same thing in replit the code works , i wanna use vs code pls help...

CODE AND ERROR: https://paste.pythondiscord.com/tecijuqixe.py

slate swan
sick birch
#

i'm not really sure how one would install it properly on windows, as i'm on linux

slate swan
stark hearth
slate swan
#

which do i choose?

#

hi

#

what is the discord.js server link?

#

i need to get there but cant find the link

sage otter
slate swan
#

oooooof

#

which should i install

visual island
#

get the exe file

slate swan
#

guyz what is FFmpeg ?

slate swan
#

oooooooooof there are no exe files , rip

maiden fable
#

Lmao

slate swan
#

imma just give up

boreal ravine
stoic bridge
#

hi how do i put my bot into a class that inherit the commands.Bot?

brazen raft
#

Put it in the parentheses and call super().__init__() in your __init__ method

stoic bridge
maiden fable
#

Can you provide some more information?

stoic bridge
#

like this

class Bot(commands.Bot):
    def __init__(self):
        super().__init__(command_prefix="!")
        self.TOKEN = TOKEN
    
    def ping(self, ctx):
        await ctx.send("Pong!")
    

how do i add a command? cause this does not work

boreal ravine
#

U cant

#

if ur doing that

#

just do ```py
bot = Bot()

@bot.command()
async def ...

stoic bridge
#

oh

boreal ravine
#

yes

stoic bridge
#

so you cant add commands while in class?

boreal ravine
#

i mean

#

idk

stoic bridge
#

it does work on event but not command

boreal ravine
#

mhm

visual island
#

you can use self.add_command()

slate swan
#

who know?

lament mesa
#

import

slate swan
#

i know

#

but its not work

#

using cogs

#

write an error that there is no such command

slate swan
#

no

#

it's not difficult

#

make a class

#

inherit commands.Cog

#

your __init__ (bot as parameter) function contains only this
self.bot = bot

#

then you replace @bot.command() with @commands.command()

#

every bot with self.bot

#

that's it?

#

no

#

okay it's hard I admit

#

setup function at the end:

def setup(bot):
    bot.add_cog(Class_name(bot))
#

hmm, can't think of any more

visual island
#

load_extension()

slate swan
#

yes

#

in your main file, you'll have to use bot.load_extension(path_to_cog)

#

wherever or however you want, except in on_ready

#

so in order for me to be able to connect files and for them to work, I need cogs?

#

when you're making discord bots, yes

#

otherwise your Bot instance wouldn't recognise nothing

#

very difficult((

#

it's like two languages in one python-discord

boreal ravine
#

what

#

🤨

slate swan
boreal ravine
#

f-strings

slate swan
dim wing
#

is possible to do this in discordpy ?

#

the scroll menu

#

from draftbot

slate swan
#

Yes it is

dim wing
#

oh nice

#

and is it possible to do this? a watch party from draftbot too

boreal ravine
dusk dust
#

can someone who has used discord-ext-form help me

floral anvil
#

I'm trying to make a discord bot when someone can do ?name Harry and it will give you the meaning of the name Harry, I have access to the behindthename API and I have an xml and json link and an api key would someone be able to help? Thanks 🙂

dim wing
hazy elbow
warm mirage
#

decent idea

#

but idk anything about api's and it seems tricky

#

im thinking you can list the name

#

or append the list when it is called with a definition

visual yarrow
floral anvil
broken dirge
#

Hey guys! I'm getting lots of errors when I'm running the code because of discord library. Do you guys maybe know the solution?

#

uninstalling and installing again doesn't work

warm mirage
#

whats the code

warm mirage
# broken dirge

depends on the issue what can the issue be because it can be based on ur code

#

discord bot is sorta reliable

broken dirge
#

but then I install the library

#

it says requirement already satisfied

warm mirage
#

ok but whats ur code the issue can be in ur code

#

not the module (most probably)

broken dirge
#

like 600

warm mirage
#

can you show the full error atleast?

broken dirge
#

Yeah, sure one sec

#

Traceback (most recent call last):
.py", line 3, in <module>
import discord
_init_.py", line 25, in <module>
from .client import Client
client.py", line 33, in <module>
import aiohttp
", line 6, in <module>
from .client import (
", line 35, in <module>
from . import hdrs, http, payload
http.py", line 1, in <module>
import http.server
server.py", line 92, in <module>
import email.utils
email.py", line 1, in <module>
import smtplib
smtplib.py", line 47, in <module>
import email.utils
ModuleNotFoundError: No module named 'email.utils'; 'email' is not a package

warm mirage
#

whats the packages u isnatlled?

broken dirge
#

from asyncio.tasks import wait
from typing import ContextManager
import discord
from discord.ext import commands
import random
from bs4 import BeautifulSoup
from random import *
import requests
from random import randrange
import urllib.request
from dotenv import load_dotenv
from discord.ext import commands
from discord.utils import get
from discord import FFmpegPCMAudio
from discord import TextChannel
from youtube_dl import YoutubeDL
import nacl
from discord import Spotify
import googletrans
from googletrans import Translator
from discord.ext.commands import Bot
from discord.ext import commands
import asyncio
import time

warm mirage
#

do u have intents turned on?

visual yarrow
broken dirge
warm mirage
#

go to ur devportal and turn on intents in ur discord bots thingy not sure what it is called

#

turn on member intents

slate swan
#

!intents

unkempt canyonBOT
#

Using intents in discord.py

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

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

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

from discord import Intents
from discord.ext import commands

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

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

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

broken dirge
#

By the way if I uninstall discord library the only error is discord library is missing so I think that it is somehow related to that

warm mirage
#

the package

#

is required

#

deleting it makes nothing work

#

i think

broken dirge
#

I know 🙂

warm mirage
#

update the package?

broken dirge
#

Do I need to pip install intents or are they there by default

warm mirage
#

no u have to turn them on through your devolpoer portal

#

when u first invite the bot

broken dirge
#

My bot is pretty old

#

it always used to work

warm mirage
#

head over to devportal and find it discord dev portal and enable the setting for it then add the code for the intents

#

it should help

#

or update the discord package

broken dirge
warm mirage
slate swan
#

intents aint permissions xd

shy schooner
#

should i replace all my bot's prefix commands by slash commands

slate swan
#

Yes you should consider that

dim wing
#

i have a cog and commands in it. I have functions that i used often so i defined them in static method in the cog, idk if there is a better way to do that

#

it's an economy cog, so i use function like access_bank, retrieve_money and they are defined in a static method

#

it's working but idk if it's a good design

#
class EconomyCommands(commands.Cog):
    ....
    @staticmethod
    async def is_registered(user_id):
    ....

    @staticmethod
    async def create_account(user_id):
    ....

    @staticmethod
    async def get_money(user_id):
    ....

    @commands.command(name="balance", aliases=["bl"])
    async def _balance(self, ctx: commands.Context):
    ...
    ...await EconomyCommands.is_registered(user_id)..
slate swan
#

Have you tried to design it using something like helpers folder and different files for each purpose in it?

warm mirage
#

if u bot can ping someone

dim wing
slate swan
#

No

#

Make a folder called helper(s), and a file called something like economy then you can use economy.is_registered, etc.

shy schooner
slate swan
#

I'm literally doing it on my bot x)

dim wing
warm mirage
# slate swan You can.

how when i use my bot to ping me if there is a problem i litrally cannot @ them in the command

slate swan
warm mirage
#

no i mean : /bb command @ usernaem doesn't work the @ doesn't ping the user i mean

slate swan
#

Why would you want the user to be pinged

#

How is that in any way useful and a reason to not use slash commands

slate swan
#

lol i dont know what half of those do, they sound madeup

#

!ytdl anyways

unkempt canyonBOT
#

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)
slate swan
#

None of them is made up though

dusk dust
#

Is it possible to get the bot to send a message from one server to another?

slate swan
#

also what does base64 do

boreal ravine
dim wing
slate swan
boreal ravine
dusk dust
slate swan
#

I use base64 for shites and giggles but i dont see what it does

boreal ravine
slate swan
#

Maybe you want to read that a little bit better and take a closer look at it

boreal ravine
#

hm

slate swan
#

on projects that may breach terms of services

slate swan
#

Not on questions

gaunt herald
#

How can i make this?

boreal ravine
boreal ravine
unkempt canyonBOT
#

class discord.ui.Select(*, custom_id=..., placeholder=None, min_values=1, max_values=1, options=..., disabled=False, row=None)```
Represents a UI select menu.

This is usually represented as a drop down menu.

In order to get the selected items that the user has chosen, use [`Select.values`](https://discordpy.readthedocs.io/en/master/api.html#discord.ui.Select.values "discord.ui.Select.values").

New in version 2.0.
gaunt herald
#

Ok thanks

slate swan
dim wing
slate swan
#

!d discord.ui.Select.values

unkempt canyonBOT
loud junco
#

how to do subcommand
like rpm craft 1, rpm craft 2 in rpm craft

slate swan
#

How can i make that the bot say my name not the person i pinged?

slate swan
loud junco
slate swan
loud junco
#

thanks

slate swan
#

thanks :3

loud junco
#
@bot.group(pass_context=True)
async def First(ctx):
    if ctx.invoked_subcommand is None:
        await bot.say('Invalid sub command passed...')

@First.group(pass_context=True)
async def Second(ctx):
    if ctx.invoked_subcommand is Second:
        await bot.say('Invalid sub command passed...')

@Second.command(pass_context=True)
async def Third(ctx):
    msg = 'Finally got success {0.author.mention}'.format(ctx.message)
    await bot.say(msg)
slate swan
#

Yeah

loud junco
#

what does this mean

slate swan
#

For you, you can ignore the second one

loud junco
#

second?

#
@First.group(pass_context=True)
async def Second(ctx):
    if ctx.invoked_subcommand is Second:
        await bot.say('Invalid sub command passed...')
```this one?
slate swan
#
@bot.group(pass_context=True)
async def first(ctx):
  # !first / !first second
  if ctx.invoked_subcommand is None:
    # !first **only**

@first.command(pass_context=True)
async def second(ctx):
  # !first second
boreal ravine
#

Whats the exception caused when the has_permissions check failed

slate swan
#

!first second

loud junco
#

=.=

#

! means not here?

#

or what

slate swan
#

It's the prefix

#

!d discord.ext.commands.MissingPermissions

unkempt canyonBOT
#

exception discord.ext.commands.MissingPermissions(missing_permissions, *args)```
Exception raised when the command invoker lacks permissions to run a command.

This inherits from [`CheckFailure`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.CheckFailure "discord.ext.commands.CheckFailure")
loud junco
#

oo

slate swan
#

It's your command name................

boreal ravine
#

ah ok

loud junco
#

i copied that from stackoverflow

boreal ravine
#

nice

boreal ravine
slate swan
#
@bot.group()
async def first(ctx):
  # this is when you execute !first

@first.command()
async def second(ctx):
  # this is when you execute !first second
#

there

loud junco
slate swan
#

c o m m a n d s

#

Dude

#

These are your commands.............

loud junco
#

i got it now

boreal ravine
loud junco
#

thanks

slate swan
#

Then change first to rpm and second to craft

stoic bridge
#

catto you created those commands

loud junco
slate swan
#

then you don't need subcommands

loud junco
loud junco
stoic bridge
#

yes ik

loud junco
#

i need tons of rpm craft (blah blah)

boreal ravine
slate swan
#

If rpm is your prefix, craft would be the command and 1 would be an argument

loud junco
#

im asking what it does here

broken dirge
#

can't open file 'C:\xxx': [Errno 2] No such file or directory

slate swan
#

Error says all

loud junco
#

lol

#

wrote file name

#

typo maybe?

broken dirge
stoic bridge
#

i think he did it on purpose to not exposed his directory

slate swan
broken dirge
#

Maybe you know what could be the solution

slate swan
#

Maybe if you give the errors

broken dirge
slate swan
#

Again, error says all

#

email is not a package

stoic bridge
#

yes

loud junco
#

=.=

slate swan
#

How does your folder structure look like and what is your code

loud junco
slate swan
#

You're probably not importing your files correctly

broken dirge
full valley
#

Hi guys how would I randomly generate a key value for a dictionary and add it after an if statement is met
I am making a queue system, where players can !queue, once the q reaches 6 players, the game id and user id's are put in a dictionary
{gameid: [user id's]}
but I want game id every time the q reaches 6/6 players, to increase by 1 and thus making a new key with that value

slate swan
stoic bridge
#

Mr. Paper can you show the folder of the file?

broken dirge
slate swan
#

And the folder structure?

#

Well again

broken dirge
slate swan
#

As per rule 5 we can't help you

#

So yeah

stoic bridge
#

folder of the file

broken dirge
slate swan
#

!rule 5

unkempt canyonBOT
#

5. Do not provide or request help on projects that may break laws, breach terms of services, or are malicious or inappropriate.

broken dirge
slate swan
#

youtube_dl breaches the terms of service of YouTube

broken dirge
#

Oh

vocal plover
#

technically it doesnt but thats a discussion for another day

broken dirge
#

Ill remove it

vocal plover
#

using youtubedl on youtube specifically does Kek

slate swan
#

Yeah but who uses it on something else KEKL

vocal plover
#

me

slate swan
#

And which music provider allows streaming?

vocal plover
#

?

slate swan
#

Well, how do you play the music

vocal plover
#

again, ?

slate swan
vocal plover
#

let me introduce you to the concept of a program which isnt a discord music bot

slate swan
#

So what's the purpose of youtube-dl in your Discord bot that isn't a music bot?

broken dirge
#

The one with imports?

slate swan
#

Again, we won't help you further

broken dirge
#

I dont even use it

slate swan
broken dirge
#

in the code

magic stump
#

voice_channel = ctx.message.author.voice.channel AttributeError: 'str' object has no attribute 'message' ```py

@bot.command(name="play", help="Plays a selected song from spofity")
async def p(self, ctx, *args):
    query = " ".join(args)
    
    voice_channel = ctx.message.author.voice.channel
    if voice_channel is None:
        #you need to be connected so that the bot knows where to go
        await ctx.send("Connect to a voice channel!")
    else:
        song = self.search_yt(query)
        if type(song) == type(True):
            await ctx.send("Could not download the song. Incorrect format try another keyword. This could be due to playlist or a livestream format.")
        else:
            await ctx.send("Song added to the queue")
            self.music_queue.append([song, voice_channel])
            
            if self.is_playing == False:
                await self.play_music()```
broken dirge
dusk pumice
vocal plover
#

when did i say it was a discord bot?

slate swan
#

How does using youtube-dl not breach their terms of service when not being used on Discord

#

How do you use youtube-dl in your project so that it doesn't break their terms of service

dusk pumice
broken dirge
#

I don't use youtube dl !!!!!

slate swan
#

Not talking to you

magic stump
#

voice_channel = ctx.message.author.voice.channel AttributeError: 'str' object has no attribute 'message' ```py

@bot.command(name="play", help="Plays a selected song from spofity")
async def p(self, ctx, *args):
    query = " ".join(args)
    
    voice_channel = ctx.message.author.voice.channel
    if voice_channel is None:
        #you need to be connected so that the bot knows where to go
        await ctx.send("Connect to a voice channel!")
    else:
        song = self.search_yt(query)
        if type(song) == type(True):
            await ctx.send("Could not download the song. Incorrect format try another keyword. This could be due to playlist or a livestream format.")
        else:
            await ctx.send("Song added to the queue")
            self.music_queue.append([song, voice_channel])
            
            if self.is_playing == False:
                await self.play_music()```
stoic bridge
slate swan
#

Remove self from the parameters list of the command

magic stump
#

okey

magic stump
slate swan
#

And I don't know what search_yt does, but if you're using ytdl you shouldn't ask questions about it -> #rules 5

magic stump
#

but voice_channel = ctx.message.author.voice.channel AttributeError: 'str' object has no attribute 'message'

slate swan
#

What is the code now?

#

Just the top part

magic stump
#

    @bot.command(name="play", help="Plays a selected song from spofity")
    async def p(ctx, *args):
        query = " ".join(args)
        
        voice_channel = ctx.message.author.voice.channel
        if voice_channel is None:```
slate swan
#

Have you restarted the bot?

boreal ravine
#

ctx is a string?

magic stump
magic stump
slate swan
#

Are you in a cog?

magic stump
dusk pumice
#

What is lastest version of dpy?

slate swan
#

Are you in a cog?

magic stump
#

no

boreal ravine
slate swan
dusk pumice
#

Oh

#

Okay Tnx

magic stump
slate swan
#

Well as I said

#

You're not in a cog

#

So you can remove all the self.

#

And not copy paste code from other sources

#

As you will face undefined variables/functions errors pretty soon

magic stump
#

okey

dusk pumice
#

how can I use dpy 2.0?

boreal ravine
#

from github

slate swan
dusk pumice
slate swan
#

how to make pages with embeds

#

cuz i am trying to make

#

shop

boreal ravine
slate swan
#

Pagination

slate swan
#

cuz chat is being spammed with items in shop

#

any way to make pages the easy way?

boreal ravine
#

I mean it depends on how you want it to be

slate swan
#

but when theres above 12 items in shop

#

then u must do ,shop 2

#

to send page 2

normal folio
maiden fable
slate swan
maiden fable
# dusk pumice 😦

Not saying anything to you, but people are just confused about that since it's not available to install, the main way (pip install way)

dusk pumice
#

XD

slate swan
opaque plinth
slate swan
#

if i do group

#

it will show the same items from mainshop page 1

opaque plinth
#

bruh make another

slate swan
#

then how i am gonna buy items from mainshop2 for example?

opaque plinth
#

group commands and make others command in group like shop 2 shop 3

tired agate
#

hey can someone help me resolve an error which spyder throws when i try executing a bot

Exception in callback <TaskStepMethWrapper object at 0x00000201AE3F3AF0>()
handle: <Handle <TaskStepMethWrapper object at 0x00000201AE3F3AF0>()>
Traceback (most recent call last):
File "C:\Users\lol\anaconda3\lib\asyncio\events.py", line 81, in _run
self._context.run(self._callback, *self._args)
RuntimeError: Cannot enter into task <ClientEventTask state=pending event=on_ready coro=<function on_ready at 0x00000201AE3BBDC0>> while another task <Task pending name='Task-2' coro=<Kernel.dispatch_queue() running at C:\Users\lol\anaconda3\lib\site-packages\ipykernel\kernelbase.py:457> cb=[IOLoop.add_future.<locals>.<lambda>() at C:\Users\lol\anaconda3\lib\site-packages\tornado\ioloop.py:688]> is being executed.

#

i use anaconda btw

normal folio
pearl birch
#

Is the "news channel" in TextChannel.is_news() just an announcement channel

slate swan
#

Yes

#

news channels == announcements channels

pearl birch
#

thank you

full valley
#

anyone know any good open-source discord bot ranking systems in python

magic stump
#

mhm

slate swan
#

eh

#

!d discord.Member.voice

unkempt canyonBOT
#

property voice: Optional[discord.member.VoiceState]```
Returns the member’s current voice state.
slate swan
#

and use .channel

slate swan
# magic stump

voice_channel has been removed from a long time , are you watching some tutorial?

magic stump
#

okey