Coding Python Discord Bot - Reaction Role (Aplha) (1 Betrachter)

  • Ersteller des Themas
  • Gesperrt
  • #1

Semø

Forum-Mitglied
16 März 2020
57
10 %
Da ich mir selber einige Guides nun angesehen habe, habe ich mir mal einen kleinen Bot zusammen geschmissen. Das ganze basiert auf Python3

Ich werde dazu leider keinen Support geben, da ich mich selber noch mit der Materie auseinander setze, aber ich hoffe das ist für den einen oder anderen verständlich!

Python:
# bot.py
# Invite Link -> https://discordapp.com/api/oauth2/authorize?client_id=<DEINE BOT CLIENT ID>&permissions=8&scope=bot
# Du musst im Developer Portal einen Bot erstellen und im Tab Oauth2 einen Link erzeugen. Bot und Administrator anklicken!
import discord
import os

from dotenv import load_dotenv
from itertools import cycle

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUID')
VERSION = os.getenv('BOT_VERSION')

client = discord.Client()
#client = commands.Bot(command_prefix="$")

@client.event
async def on_ready():
    print(f'Bot Version : {VERSION}\n')
    print(f'{client.user} is connected to the following guild:\n')
    for guild in client.guilds:
        print(
            f'Server : {guild.name}(id: {guild.id})'
        )
        if guild.name == GUILD:
            break
    statuses = cycle(["Ich bin ein richtiger Kevin!"])
    await client.change_presence(activity=discord.Activity(type=discord.ActivityType.playing, name=next(statuses)))

@client.event
async def on_raw_reaction_add(payload):
    message_id = payload.message_id
    if message_id == DEINE MESSAGE ID:
        guild_id = payload.guild_id
        guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)

        if payload.emoji.name == 'minecraft':
            role = discord.utils.get(guild.roles, name='Minecraft')
        elif payload.emoji.name == 'fortnite':
            role = discord.utils.get(guild.roles, name='Fortnite')
        else:
            role = discord.utils.get(guild.roles, name=payload.emoji.name)

        if role is not None:
            member = discord.utils.find(lambda m : m.id == payload.user_id, guild.members)
            if member is not None:
                await member.add_roles(role)
                print("Role Added.")
            else:
                print("Member not found.")
        else:
            print("Role not found.")

@client.event
async def on_raw_reaction_remove(payload):
    message_id = payload.message_id
    if message_id == DEINE MESSAGE ID:
        guild_id = payload.guild_id
        guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)

        if payload.emoji.name == 'minecraft':
            role = discord.utils.get(guild.roles, name='Minecraft')
        elif payload.emoji.name == 'fortnite':
            role = discord.utils.get(guild.roles, name='Fortnite')
        else:
            role = discord.utils.get(guild.roles, name=payload.emoji.name)

        if role is not None:
            member = discord.utils.find(lambda m : m.id == payload.user_id, guild.members)
            if member is not None:
                await member.remove_roles(role)
                print("Role Removed.")
            else:
                print("Member not found.")
        else:
            print("Role not found.")          
client.run(TOKEN)
Das .env File
Code:
DISCORD_TOKEN=DEIN BOT TOKEN
DISCORD_GUILD=DEINE SERVER ID
BOT_VERSION=1.0.0
 

Dieses Thema betrachten gerade (Benutzer: 0, Gäste: 1)