Добрий день.
Знайшов такий сайт(https://some-random-api.ml) де можна бібліотекую requests и json витягувати силки на фото або гіф.
Але там мало хотілося б більше якщо хтось знає такі сайти або спосіб то буду дуже вдячний якщо поділитися :)

2

(5 відповідей, залишених у Python)

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

3

(5 відповідей, залишених у Python)

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

4

(5 відповідей, залишених у Python)

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

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

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

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

6

(5 відповідей, залишених у Python)

Рішення:

prefix_1 = prefix_in_guild(self.bot, ctx.message)
prefix = prefix_1[0]

7

(5 відповідей, залишених у Python)

Якщо написати:

prefix = prefix_in_guild(self.bot, ctx.message)

        emb= discord.Embed(title=f'Команды бота {self.bot.user.name}', description='Здесь вы узнаете информацию про все команды бота\n')
        emb.add_field(name='**Другая информация**',value=f'Чтобы получить больше информации о какой либо команде, вы можете написать: {prefix}help `команда` \nТак же, вы можете нажать на реакцию под сообщением, чтобы переключить страницу.\n')
        

То отримаю:
https://replace.org.ua/uploads/images/9747/b572309487dcbe19f93da630223d20dd.png
Але як зробити без коми після крапки і шоб крапка була не в кавичках?

8

(5 відповідей, залишених у Python)

Тоді як правильно написати щоб воно працювало?

9

(5 відповідей, залишених у Python)

Добрий вечір!
Виникла проблема, функція prefix_in_guild, повинна брати префікс сервера з БД:

import discord
from discord.ext import commands
from datetime import datetime
import os
import time
from Cybernator import Paginator as pag
import asyncpg, asyncio
import psycopg2
 
 
database = os.environ.get('DATABASE')
user = os.environ.get('USER')
password = os.environ.get('PASSWORD')
host = os.environ.get('HOST')
port = os.environ.get('PORT')
 
conn = psycopg2.connect(
    database = f"{database}", 
    user = f"{user}", 
    password = f"{password}", 
    host = f"{host}", 
    port = "5432"
)
cursor = conn.cursor()
 
def prefix_in_guild(bot,message):
    guildid = message.guild.id
    cursor.execute(f'SELECT prefix FROM public."prefixDB" WHERE guild_id = \'{guildid}\';')
    prefix = cursor.fetchone()
    conn.commit()
    
    return prefix
 
 
class HelpCommands(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
 
 
    @commands.group(name='help',aliases=['helpcmd','i','helpcommands'], invoke_without_command=True)
    async def help_for_commands(self, ctx):
        await ctx.channel.purge(limit=1)
    
 
        emb= discord.Embed(title=f'Команды бота {self.bot.user.name}', description='Здесь вы узнаете информацию про все команды бота\n')
        emb.add_field(name='**Другая информация**',value=f'Чтобы получить больше информации о какой либо команде, вы можете написать: {prefix_in_guild}help `команда` \nТак же, вы можете нажать на реакцию под сообщением, чтобы переключить страницу.\n'.)
        
        emb1= discord.Embed(title='Команды информации', description='Что бы узнать больше о команде напишите {prefix_in_guild}help [команда]. \n**Пример**: {prefix_in_guild}help user')
        emb1.add_field(name='**Команды**', value=f'`{prefix_in_guild}user`\n`{prefix_in_guild}ping`\n`{prefix_in_guild}bot_servers`\n`{prefix_in_guild}tuser`\n')
        
        emb2=discord.Embed(title='Команды администрации', description=f'`{prefix_in_guild}change_prefix` или `{prefix_in_guild}prefix`')
 
        embeds=[emb,emb1,emb2]
        message= await ctx.send(embed= emb)
        page= pag(self.bot, message, only=ctx.author, use_more=False, embeds=embeds, color=0x008000, time_stamp=True)
    
        await page.start()

Але замість префікса я отримую:

<function get_prefix at 0x7f74ae131280>

Функцію prefix_in_guild написав з готової, робочої функції:

def get_prefix(bot, message):
    guildid = message.guild.id
    cursor.execute(f'SELECT prefix FROM public."prefixDB" WHERE guild_id = \'{guildid}\';')
    prefix = cursor.fetchone()
    conn.commit()
    
    return prefix
 
bot=commands.Bot(command_prefix = get_prefix, help_command=None)

10

(4 відповідей, залишених у Python)

Дякую!!!
Тепер все працює

11

(4 відповідей, залишених у Python)

koala написав:

А правда, що ви не знаєте слів "ось" та "але"?

Є таке¯\_(ツ)_/¯

Знову доброго всім дня!!! :[

В мене ось є готовий код для додавання префікса в БД <з :

import discord
from discord.ext import commands
import os
import asyncpg, asyncio
import psycopg2

database = os.environ.get('DATABASE')
user = os.environ.get('USER')
password = os.environ.get('PASSWORD')
host = os.environ.get('HOST')
port = os.environ.get('PORT')

conn = psycopg2.connect(
    database = f"{database}", 
    user = f"{user}", 
    password = f"{password}", 
    host = f"{host}", 
    port = "5432"
)

cursor = conn.cursor()

def is_owner_guild(ctx):
    return ctx.author.id == ctx.guild.owner.id

class prefix(commands.Cog):
    def __init__(self,bot):
        self.bot = bot

    @commands.Cog.listener()
    async def on_guild_join(self, guild):
        join_guild_id = guild.id
        cursor.execute(f'INSERT INTO public."prefixDB" (guild_id, prefix) VALUES ({join_guild_id}, \'.\');')
        conn.commit()
    
    @commands.Cog.listener()
    async def on_guild_remove(self,guild):
        remove_guild_id = guild.id
        cursor.execute(f'DELETE FROM public."prefixDB" WHERE guild_id = {remove_guild_id};')
        conn.commit()
    
    @commands.command()
    @commands.check(is_owner_guild)
    async def prefix(self, ctx, prefix):
        guildid = ctx.guild.id
        cursor.execute(f'UPDATE public."prefixDB" SET prefix=\'{prefix}\' WHERE guild_id = \'{guildid}\';')
        conn.commit()

def setup(bot):
    bot.add_cog(prefix(bot))

І написана вот така функція:

def get_prefix(bot, message):
    guildid = message.guild.id
    p = cursor.execute(f'SELECT prefix FROM public."prefixDB" WHERE guild_id = \'{guildid}\';')
    conn.commit()
    prefix = str(p)
    
    return prefix

bot=commands.Bot(command_prefix = get_prefix, help_command=None)

Яка по ідеї має брати префікс з БД і підставляти сюда:

bot=commands.Bot(command_prefix = НАЗВА_ФУНКЦІЇ, help_command=None)

Якщо ввести команду:

.prefix /

Але чогось так не виходить¯\_( :( )_/¯
Ну і якщо замість / поставити любий інший префікс то нічого не відбудиться, в консоль нічого не вийде і префікс в БД не зміниться
Але якщо запустити код без:

def get_prefix(bot, message):
    guildid = message.guild.id
    p = cursor.execute(f'SELECT prefix FROM public."prefixDB" WHERE guild_id = \'{guildid}\';')
    conn.commit()
    prefix = str(p)
    
    return prefix

То при написанні команди:

.prefix /

Навпроти аді сервера зміниться префікс на той який вказаний
https://replace.org.ua/uploads/images/9747/e0830177751bcaf5cf7cd4f47ffa43d3.png

Що це може бути і як його можна рішити? *SCRATCH*

Я так ще зрозумів що тут

p = cursor.execute(f'SELECT prefix FROM public."prefixDB" WHERE guild_id = \'{guildid}\';')

воно виводить комірку а не строку, чи можливо я помиляюся?

import discord
from discord.ext import commands
import os
import asyncpg, asyncio
import psycopg2

PREFIX = '.'

database = os.environ.get('DATABASE')
user = os.environ.get('USER')
password = os.environ.get('PASSWORD')
host = os.environ.get('HOST')
port = os.environ.get('PORT')

conn = psycopg2.connect(
    database = f"{database}", 
    user = f"{user}", 
    password = f"{password}", 
    host = f"{host}", 
    port = "5432"
)

cursor = conn.cursor()

PREFIX=('.')

def is_owner_guild(ctx):
    return ctx.author.id == ctx.guild.owner.id

class prefix(commands.Cog):
    def __init__(self,bot):
        self.bot = bot
        

    @commands.Cog.listener()
    async def on_guild_join(self, guild):
        join_guild_id = guild.id
        cursor.execute(f'INSERT INTO public."prefixDB" (guild_id, prefix) VALUES ({join_guild_id}, \'.\');')
        conn.commit()
    '''
    @commands.Cog.listener()
    async def on_guild_remove(self,guild):
        remove_guild_id = guild.id
        cursor.execute(f"DELETE FROM public.`prefixDB` WHERE guild_id = {remove_guild_id};")
        conn.commit()
    '''
    @commands.command()
    @commands.check(is_owner_guild)
    async def prefix(self, ctx):
        cursor.execute('INSERT INTO public."prefixDB"(guild_id, prefix)    VALUES (12,12);')
        conn.commit()

def setup(bot):
    bot.add_cog(prefix(bot))

Вот кінцевий код, для тих хто можливо зіткнеться з такою проблемою :)

Урааа, запрацювало!
Потрібно було використати це:

f'INSERT INTO public."prefixDB" (guild_id, prefix) VALUES ({join_guild_id}, \'.\');'

Дякую!!!

https://replace.org.ua/uploads/images/9747/f6857447d51fbede66e11f200a5d2216.png
Вот скріпт для того щоб вставити в таблицю(pgAdmin 4)

Не проходить так
https://replace.org.ua/uploads/images/9747/b08afbbb70a7d5a59d36ddd85e81951b.png

Якщо вам треба додати символ лапок у SQL, то він екранується так:

'Це лапка '', використовуй її обережно!'

Так тоді Пайтон буде вважати щo це різні строки

'Це лапка '

і

', використовуй її обережно!'

Привіт!!!
В мене є такий код:

іmport discord
from discord.ext import commands
import os
import asyncpg, asyncio
import psycopg2
 
PREFIX = '.'
 
database = os.environ.get('DATABASE')
user = os.environ.get('USER')
password = os.environ.get('PASSWORD')
host = os.environ.get('HOST')
port = os.environ.get('PORT')
 
conn = psycopg2.connect(
    database = f"{database}", 
    user = f"{user}", 
    password = f"{password}", 
    host = f"{host}", 
    port = "5432"
)
 
cursor = conn.cursor()
 
PREFIX=('.')
 
def is_owner_guild(ctx):
    return ctx.author.id == ctx.guild.owner.id
 
class prefix(commands.Cog):
    def __init__(self,bot):
        self.bot = bot
        
    @commands.Cog.listener()
    async def on_guild_join(self, guild):
        join_guild_id = guild.id
        cursor.execute(f'INSERT INTO public."prefixDB" (guild_id, prefix) VALUES ({join_guild_id}' + '.' + ');')
        conn.commit()
 
    @commands.Cog.listener()
    async def on_guild_remove(self,guild):
        remove_guild_id = guild.id
        cursor.execute('DELETE FROM public."prefixDB" WHERE guild_id = ' + f'{remove_guild_id}' + ';')
        conn.commit()
 
    @commands.command()
    @commands.check(is_owner_guild)
    async def prefix(self, ctx):
        cursor.execute('INSERT INTO public."prefixDB"(guild_id, prefix) VALUES (12,12);')
        conn.commit()
 
def setup(bot):
    bot.add_cog(prefix(bot))

Коли бот заходит на сервер то в БД заноситься ади сервера и дефолтний префикс.
Якщо написати щоб записалося тільки айпі сервера то все працює, а з точкою не хоче видає таку помилку:
https://replace.org.ua/uploads/images/9747/0a1864be56e146646342cd5f4bdf923c.png

Да я знаю що воно вважає що там помилка в синтаксисі.
Я провіряв в pgAdmin команду INSERT і там добавлялась крапка, ну і в мене в коді написано так само як і там в кавичках.
Тип комірки prefix: character varying

Якщо зробити так: '"."' ,то видає наступну ошибку:
https://replace.org.ua/uploads/images/9747/34f58a4a2d9c3b8007117970c43b718e.png

19

(2 відповідей, залишених у C++)

При компіляції видає таку ошибку:
https://replace.org.ua/uploads/images/9747/ba7d7400c75118f02494e4f43f52310f.png

20

(5 відповідей, залишених у HTML та CSS)

Я зрозумів, дякую за пояснення