首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用一个脚本运行10个机器人,而不重写10次代码(discord.py)

使用一个脚本运行10个机器人,而不重写10次代码(discord.py)
EN

Stack Overflow用户
提问于 2020-11-11 22:50:38
回答 2查看 85关注 0票数 0

我在我的不和谐服务器中创建了10个不和谐的机器人,我想为每个机器人创建相同的函数,但是为了编写一个简单的bot命令,我需要编写40行代码,有什么方法可以缩短代码呢?因为写10遍相同的代码是很麻烦的。这是我的密码。

代码语言:javascript
复制
import asyncio
import random
import discord
from discord.ext import commands

bot_1 = commands.Bot(command_prefix='()')
bot_2 = commands.Bot(command_prefix='()')
bot_3 = commands.Bot(command_prefix='()')
bot_4 = commands.Bot(command_prefix='()')
bot_5 = commands.Bot(command_prefix='()')
bot_6 = commands.Bot(command_prefix='()')
bot_7 = commands.Bot(command_prefix='()')
bot_8 = commands.Bot(command_prefix='()')
bot_9 = commands.Bot(command_prefix='()')
bot_10 = commands.Bot(command_prefix='()')


loop = asyncio.get_event_loop()

loop.create_task(bot_1.start("token 1"))
loop.create_task(bot_2.start("token 2"))
loop.create_task(bot_3.start("token 3"))
loop.create_task(bot_4.start("token 4"))
loop.create_task(bot_5.start("token 5"))
loop.create_task(bot_6.start("token 6"))
loop.create_task(bot_7.start("token 7"))
loop.create_task(bot_8.start("token 8"))
loop.create_task(bot_9.start("token 9"))
loop.create_task(bot_10.start("token 10"))

@bot_1.event
async def on_ready():
    print("Tutti i bot sono stati caricati correttamente.\n")


@bot_1.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")
@bot_2.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")
@bot_3.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")
@bot_4.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")
@bot_5.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")
@bot_6.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")
@bot_7.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")
@bot_8.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")
@bot_9.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")
@bot_10.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")


try:
    loop.run_forever()
finally:
    loop.stop()

(我不能发布这个,因为大部分是代码)(我不能发布这个,因为大部分是代码)(我不能发布这个,因为大部分是代码)(我不能发布这个,因为大部分是代码)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-11 23:09:30

这可能看起来像

代码语言:javascript
复制
import asyncio
import random
import discord
from discord.ext import commands

TOKENS = ["token 1"
          "token 2"
          "token 3"
          "token 4"
          "token 5"
          "token 6"
          "token 7"
          "token 8"
          "token 9"
          "token 10"]

async def on_ready():
    print("Tutti i bot sono stati caricati correttamente.\n")

async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")

loop = asyncio.get_event_loop()

for token in TOKENS:
    bot = commands.Bot(command_prefix='()')
    loop.create_task(bot.start(token))
    bot.event(on_ready)
    bot.command()(parola_casuale)

try:
    loop.run_forever()
finally:
    loop.stop()
票数 2
EN

Stack Overflow用户

发布于 2020-11-11 23:03:16

使用循环和列表:

代码语言:javascript
复制
import asyncio
import random
import discord
from discord.ext import commands

bots = [] #empty
tokens = ["key1","key2"] #here should be all the keys

loop = asyncio.get_event_loop()

@bot.event
async def on_ready():
    print("Tutti i bot sono stati caricati correttamente.\n")


@bot.command()
async def parola_casuale(ctx):
    file = open("Parole.txt", "r")
    parole = file.readlines()
    parola = random.choice(parole)
    await ctx.message.channel.send(f"Ecco a te: {parola}")

for i in range(len(tokens)): #for every token
    bots.append(commands.Bot(command_prefix='()')) #create a bot
    loop.create_task(bot[i].start(tokens[i])) #start the bot
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64795342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档