1 Востаннє редагувалося leofun01 (18.08.2020 14:01:46)

Тема: Як правильно написати умову для if? discord.py rewrite PostgreSQL

Добрий день!
Маю такий кусок кода:

@commands.Cog.listener()
    async def on_member_join(self, member):
        cursor.execute(f'SELECT channel_for_greeting FROM public."prefixDB" WHERE guild_id = \'{member.guild.id}\';')
        chan = cursor.fetchone()
        conn.commit()
        
        cursor.execute(f'SELECT true_or_false FROM public."prefixDB" WHERE guild_id = \'{member.guild.id}\';')
        yes_or_not = cursor.fetchone()
        conn.commit()
        
        channel = self.bot.get_channel(chan[0])
        print(yes_or_not[0]) 
        
        if f'{yes_or_not}' == str('True'):
            emb = discord.Embed(
                title = f'Вітаємо вас на сервері {member.guild.name}!',
                description = f'Кожний учасник цього сервера рівний з іншими. Тому просимо ознайомитися з правилами сервера\nДякуємо за ввічливість та адекватність.',
                colour = discord.Color.green()
            )
            emb.set_thumbnail(
                url = member.avatar_url
            )
            emb.set_footer(
                text = f'{member.id}' + ' Приємного проведення часу!',
                icon_url= 'https://github.com/xzartsust/holo_bot/blob/master/files/image/id.png?raw=true'
            )
            await channel.send(f'{member.mention}', embed = emb)
        else:
            print('no')

В змінну yes_or_not заноситься значення з БД True або False
Якщо в БД True то коли новий юзер заходить на сервер в певний канал буде надсилатися привітання, якщо False то відповідно нічого не буде

Я написав else: print('no') для перевірки.
Так вот коли юзер заходить то мені в консоль виводить no, тобто в мене не правильно написана умова.
Перепробував декілька варіантів, але всеодно виводить no.

Яка умова підійде?

2

Re: Як правильно написати умову для if? discord.py rewrite PostgreSQL

xZartsust написав:
        if f'{yes_or_not}' == str('True'):
            ...

О, це саме сюди

https://не-дійсний-домен/i9/9b13994d86c9c318b41698fe6e57c5a1/1581331915/60796/1360709/13970010_800.jpg

Подякували: xZartsust, 0xDADA11C7, P.Y.3

3

Re: Як правильно написати умову для if? discord.py rewrite PostgreSQL

:D  :D  :D  :D
Дякую я все зрозумів

4

Re: Як правильно написати умову для if? discord.py rewrite PostgreSQL

xZartsust написав:
        yes_or_not = cursor.fetchone()
        print(yes_or_not[0])
        if f'{yes_or_not}' == str('True'):

В змінну yes_or_not заноситься значення з БД True або False

Ні. В змінну заноситься рядок (послідовність даних) з таблиці БД, і цей рядок містить 1 елемент (True або False).

row = cursor.fetchone()
if row:
    print(row)
    data = row[0]
    if data:
        # ...
    # або
    if data == str(True):
        # ...
Подякували: xZartsust1

5

Re: Як правильно написати умову для if? discord.py rewrite PostgreSQL

Я вже переробив скориставшись вашою фотографією :)
https://replace.org.ua/uploads/images/9747/2ccb7d77acf9fbba7b6fc1cd5bbcad14.jpg

6

Re: Як правильно написати умову для if? discord.py rewrite PostgreSQL

Моя помилка була в тому що в БД в мене колонка буда типом charing varing замість boolean

Подякували: leofun011