簡體   English   中英

Python中的Discord Bot-我試圖從具有特定角色的所有人中隨機挑選一個人

[英]Discord Bot in Python - Im trying to pick a random person from all the people with a specific role

因此,我正在嘗試使用Python創建Discord Bot。 我只是想制作一個可以打“打”角色的隨機機器人。 我已經做好了所有准備工作,但我不知道該如何招募一個隨機成員。 並盡可能將其限制為當前在線的用戶。 我相當擅長python,但對於不和諧的機器人還是陌生的。 如果您能幫忙,id會感激不盡。 我的密碼

import time
import discord
import random
from discord.ext import commands

bot = commands.Bot(command_prefix=',', description='Enjoy Being Slapped 
Randomly')
intervalM = random.randint(5,15)
#intervalS = integerM * 60

@bot.event
async def on_ready():
    print('Logged in as')
    print(bot.user.name)

@bot.command()
async def slapInt(integer):
    await bot.say("Time Between Slaps is now... " + str(integer) + "min")
    intervalM = integer

@bot.command()
"""manually slap someone"""
async def slapMan(intervalM, user):
    #debug - await bot.say("oof " + str(intervalM))
    intervalS = float(intervalM) * 60
    await bot.say("Slapping someone in " + str(intervalS) + " seconds")
    for i in range(0,int(intervalS)+1):
        if i == int(intervalS):
            await bot.say(" just got slapped!")
            intervalM = random.randint(5,15)
            slap(intervalM)
        else:
            #await bot.say(i)
            time.sleep(1)

def slap(intervalM):
    intervalS = float(intervalM) * 60
    print("Slapping someone in " + str(intervalS) + " seconds")
    for i in range(0,int(intervalS)+1):
        if i == int(intervalS):
            print(" just got slapped!")
            intervalM = random.randint(5,15)
            slap(intervalM)
        else:
            #await bot.say(i)
            time.sleep(1)

bot.run('~~~~~~~~~')
slap(intervalM)

您可以嘗試以下方法:

server = discord.Server(id='your_server_id')

def slap(intervalM):
    intervalS = float(intervalM) * 60
    print("Slapping someone in " + str(intervalS) + " seconds")
    for i in range(0,int(intervalS)+1):
        if i == int(intervalS):
            roleMembers = []
            for member in server.members:
                for role in member.roles:
                    if role.name == 'your_role_name' and member.status == 'online':
                        roleMembers.append(member)
            memberCount = len(roleMembers)
            randomNumber = random.randint(0, (memberCount -1)
            await bot.say(roleMembers[randomNumber].name + ' just got slapped!')
            intervalM = random.randint(5,15)
            slap(intervalM)
        else:
            #await bot.say(i)
            time.sleep(1)

(代碼未經測試)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM