Ответы пользователя по тегу discord.py
  • Почему возникает ошибка?

    @DF0rig
    clay
    Вам требуется правильно изучить библиотеку discord.py, обращая внимания на мелкие детали

    @client.event
    async def on_member_join(member):
     emb = discord.Embed(
      title = "Hello world!". # В переменной title / description был прочерк
      color = discord.Colour.red()
     )
     my_channel = client.get_channel(1013857829800644619)
     role = member.guild.get_role(role_id=1013858298577027072)
     await member.add_roles(role)
     await channel.send(f"> **{member.mention} присоединился на сервер!**")
     member_emb = discord.Embed(
      description = f'***Привет {member.mention}! \nМы рады приветствовать тебя на нашем сервере! \nУ нас тут: \nПриятное комьюнити \n-Здесь ты умрёшь!***'
     )
     await member.send(embed=member_emb)

    Так же убедитесь что на Discord Developer, у вас включены следующие пункты:
    lK1qL.png
    Ответ написан
    6 комментариев
  • Как обновить библиотеку?

    @DF0rig
    clay
    Удали библиотеку, и скачай заново
    pip uninstall discord.py
    pip install discord.py
    Ответ написан
    Комментировать
  • Как прикрепить файл (НЕ ИЗОБРАЖЕНИЕ) в бот discord?

    @DF0rig Автор вопроса
    clay
    spr_file = "file path"
    await ctx.send(embed=emb, file=discord.File(spr_file))
    Ответ написан
    Комментировать
  • Как сделать команду, выдающую роль на время?

    @DF0rig
    clay
    Естественно максимально точно данную команду сделать невозможно, с учётами перезапусков ботов. Я предлагаю свой вариант: Вы можете использовать datetime для таймера

    @bot.command()
    async def add_role(ctx, member: discord.Member, arg1=None, arg2=None): 
    	# arg1 - ID роли
    	# arg2 - Время В МИНУТАХ!
    	if (arg == None) or (arg1 == None):
    		await ctx.send("Укажите пользователя или время в **минутах**")
    		return
    	discord_author = ctx.author.id
    	dt = datetime.now() # Текущее время 
    	user_time = dt + timedelta(minutes=int(arg2)) # Получаем время окончания роли
    	
    	with open("temp.json", 'r') as f: # Создайте файл temp.json 
    		data = json.load(f)
    	data.update({
    		discord_author: {
    			"time": str(user_time),
    			"role": arg2
    	})
    	with open("temp.json", 'w') as file:
    		json.dump(data, file, indent=4)
    	role = discord.utils.get(ctx.guild.roles, id=int(arg1))
    	await ctx.send(f"Пользователю {member} выдана роль на {arg2} минут")
      await ctx.member.add_roles(role)
    
    @bot.event
    async def on_ready():
    	with open("temp.json" 'r') as f:
    		data = json.load(f)
    	for user in data:
    		with open("temp.json", 'r') as file:
    			dont_ready_file = file.read()
    		files = json.loads(dont_ready_file)
    		user_times = files[user]["time"]
    		user_time = datetime.strptime(user_times, "%Y-%m-%d %H:%M:%S.%f")
    		dt = datetime.now()
    		if dt < user_time:
    			data.pop(user)
    			user_role = files[user]["role"]
    			role = discord.utils.get(ctx.guild.roles, id=int(user_role))
    			await member.remove_roles(role)
    			print("Срок выдачи роли игрока истёк")
    # Повторяем действия, но с on_message, чтобы гарантировать максимальную точность
    @bot.event
    async def on_message():
    	with open("temp.json" 'r') as f:
    		data = json.load(f)
    	for user in data:
    		with open("temp.json", 'r') as file:
    			dont_ready_file = file.read()
    		files = json.loads(dont_ready_file)
    		user_times = files[user]["time"]
    		user_time = datetime.strptime(user_times, "%Y-%m-%d %H:%M:%S.%f")
    		dt = datetime.now()
    		if dt < user_time:
    			data.pop(user)
    			user_role = files[user]["role"]
    			role = discord.utils.get(ctx.guild.roles, id=int(user_role))
    			await member.remove_roles(role)
    			print("Срок выдачи роли игрока истёк")

    Я не уверен что данный код работает. Поправьте меня если вдруг я допустил ошибку.
    Ответ написан
  • Как сделать, чтобы переменная, в которой текст из json файла, имела другой текст, когда json файла с таким названием не найдено?

    @DF0rig
    clay
    if osebe == None:
        print("Пользователь ничего не написал о себе.")


    Я вам порекомендую завести 1 файл со всеми пользователями, примерно так:
    {
        "user": {
            "osebe": None
        } . . .
    }

    Так будет удобнее для вас, и для упрощения кода. Этому можно научится узнав базу использования json. После этого вы можете проверить, имеет ли переменная osebe (в json файле) чтото, или же - None:
    with open(f"finite/osebe/users.json", "r") as f: #СОЗДАЙТЕ ФАЙЛ users.json ДЛЯ ВСЕХ ПОЛЬЗОВАТЕЛЕЙ
        jsonosebe = f.read()
    data = json.loads(jsonosebe)
    try:
        info_osebe = data[useeer]["osebe"]
    except:
        info_osebe = "Пользователь ничего не написал о себе."
    print(info_osebe)
    Ответ написан
  • Таблицы данных в боте discord.py. примеры есть у кого?

    @DF0rig
    clay
    Для начала изучите discord.py, (если в вашем боте присутствует экономика - бд / json). Вам стоит понять лишь базовые вещи, и вы сможете начинать делать полноценного бота
    Ответ написан
  • Как получить все сообщения с конкретного канала?

    @DF0rig
    clay
    async def on_message(self, message):
     u_r = await bot.wait_for('message', check=lambda message: message.author == ctx.author) # Проверка сообщения
     msg_channel = u_r.content 
     print(msg_channel)
    Ответ написан
    3 комментария
  • Как сделать автовыдачу роли?

    @DF0rig
    clay
    Вам нужно ознакомиться с библиотекой discord.py.

    @bot.event
    async def on_member_join(member):
     role = 418187634689139935
     await member.add_roles(role)
    Ответ написан