TransWikia.com

Не выдается роль с помощью сообщения Discord.py

Stack Overflow на русском Asked on February 18, 2021

Помогите разобраться. Бот должен выдавать роль, когда получит сообщение с необходимым текстом, к примеру, "Группа С118". В итоге не выдает никаких ошибок синтаксиса и тп, просто молчит.

import discord
from discord.ext import commands
from discord.ext.commands import Bot
from discord.utils import get
@Bot.event 
async def on_message(msg):         
    member = utils.get(message.guild.members, id=payload.user_id)
    if "text in message" in msg.content:
        role = discord.utils.get(member.guild.roles, id = "")
        await Bot.add_roles(member, role) 
Bot.run("TOKEN")

One Answer

У вас не правильное построение кода.

Метод on_member_join() - событие и используется так:

@Bot.event
async def on_member_join(member):
    await bot.process_commands(message)#также надо добавить это, подробнее смотрите ниже. 
    print(f'На сервере новый пользователь {member.mention}')

process_commands() - это надо что бы бот выдел команди(пример /help, если этого не будет он не ответит на команду)

Метод on_message() - тоже событие и используется так:

@Bot.event
async def on_message(message):
    if message.content == 'Hello':
        await message.channel.send(f'Hello {message.member.mention}')

И так, если вы хотите что бы выдавалась роль когда пользователь заходит на сервер то надо так:

@Bot.event 
async def on_member_join(member):         
    role = discord.utils.get(member.guild.roles, id = "")
    await member.add_roles(role) 

А если по определенному слове:

@Bot.event 
async def on_message(message):  
    await bot.process_commands(message)       
    if message.content == 'Роль':
        role = discord.utils.get(member.guild.roles, id = "")
        await message.member.add_roles(role) 

Correct answer by xZartsust on February 18, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP