#python #discord.py
#python #discord.py
Вопрос:
Я настраиваю сервер Discord для себя и своих друзей, и мне нужен бот, способный добавлять 20 реакций на любое сообщение, в котором была введена определенная триггерная фраза. Раньше у меня был бот, который мог это делать, но он был обновлен и ограничен 3 реакциями, что у меня не работает.
Итак, вот я, с моим базовым пониманием программирования, пытаюсь настроить очень простого бота для этой единственной цели.
Я уже пробовал простое предложение бота, найденное на YT, но оно вообще не сработало, и я не знаю, почему и как это исправить.
Итак, это было предложение, которое я пробовал, но не смог сделать функциональным:
import discord
from discord.ext import commands
from discord.ext.commands import Bot
import asyncio
bot = commands.Bot(command_prefix='!')
@bot.event
async def on_ready():
print ("Ready to react, boss !")
@bot.event
async def on_message(message):
if(message.channel.id == "550373218758688790"):
await bot.add_reaction(message, ":war_tank:552569109108490252")
bot.run("NTY5OTQ0NTMyMzIyNjE1MzI2.XL4IBg.WH-Ms1DWKJN8qGBBLAxdGye0q2I")
Итак, этот бот должен был реагировать на каждое сообщение реакцией, и я планировал работать оттуда, но это даже не сработало.
Вместо этого я получил сообщение в журнале cmd для каждого сообщения, которое выглядело следующим образом:
Ignoring exception in on_message
Traceback (most recent call last):
File "G:JeuxDiscord Botlibsite-packagesdiscordclient.py", line 255, in _run_event
await coro(*args, **kwargs)
File "G:BureauTotemReact Botbot.py", line 16, in on_message
await bot.add_reaction(message, ":war_tank:552569109108490252")
AttributeError: 'Bot' object has no attribute 'add_reaction'
Поэтому, если кто-нибудь с реальными навыками (учитывая мои, я буду легко впечатлен) может указать мне правильное направление, я буду более чем счастлив.
Спасибо за ваше время и внимание.
Комментарии:
1. Вам нужно воссоздать свой токен для бота сейчас! Любой может использовать текущее предложение в вашем вопросе, чтобы взять под контроль вашего бота и использовать его в злонамеренных целях. Редактировать его недостаточно, потому что у любого есть доступ к истории редактирования.
Ответ №1:
Вы смотрите на старые руководства. Client.add_reaction
был перемещен в Message.add_reaction
в discord.py 1.0
Функциональность, которую вы описываете, может выглядеть примерно так:
default_emojis = [
"N{GRINNING FACE}",
"N{KEYCAP DIGIT ONE}"
]
custom_emojis = [
"war_tank"
]
async def react(message):
for emoji in default_emojis:
await message.add_reaction(emoji)
for emoji in message.guild.emojis:
if emoji.name in custom_emojis:
await message.add_reaction(emoji)
@bot.event
async def on_message(message):
if message.author == bot.user:
return
if "react to me" in message.content.lower():
await react(message)
Комментарии:
1. Большое вам спасибо, это работает довольно хорошо. Сейчас я пытаюсь сделать так, чтобы только люди с определенным уровнем роли могли вызвать реакцию, но я все еще вырываю глаза от разочарования. Я знаю, что с моей стороны немного многовато запрашивать столько информации для такой мелочи, но это было бы действительно оценено. В любом случае спасибо вам за этот первый бит!
Ответ №2:
Прежде всего, вы захотите изменить свой токен сейчас, если вы еще этого не сделали.
Вы используете синтаксис из версии discord.py, версия 0.16, больше не поддерживается.
Смотрите Руководство по переходу на версию v1, в частности раздел Модели с отслеживанием состояния.
Вы должны использовать Message.add_reaction
, а не Bot.add_reaction
.
Ответ №3:
сначала зарегистрируйтесь на сайте replit
во-вторых, создайте новый repyl и создайте node.js
и создайте новый файл и переименуйте server.js
и скопируйте эти коды
для server.js
const express = require('express');
const server = express();
server.all('/', (req, res)=>{
res.setHeader('Content-Type', 'text/html');
res.write('<link href="https://fonts.googleapis.com/css?family=Roboto Condensed" rel="stylesheet"> <style> body {font-family: "Roboto Condensed";font-size: 22px;} <p>Hosting Active</p>');
res.end();
})
function keepAlive(){
server.listen(3000, ()=>{console.log("Server is online!")});
}
module.exports = keepAlive;
для index.js
const Discord = require('discord.js');
const client = new Discord.Client();
const mySecret = process.env['mysecrettoken']
const keepAlive = require("./server");
client.on('message', msg => {
if (msg.attachments.size > 0) { //Make sure there are attachments at all
var react = false; //Do we react to the message? Default to false
msg.attachments.forEach(attachment => { //Check each attachment to see if it's a jpg, png, or jpeg
if (attachment.url.includes(".jpg") || attachment.url.includes(".png") || attachment.url.includes(".jpeg")) {
react = true; //It's an image! We want to react to the message
};
});
if (react === true) { //React to the message
msg.react('837608362719969291');
msg.react('837608381283827734');
msg.react('837608396659097640');
msg.react('837608412337668096');
msg.react('837608426821124096');
};
};
}
)
keepAlive();
client.login(process.env.mysecrettoken);
создайте своего первого бота discord и предоставьте ему права администратора. Вы можете посмотреть видеоролики YouTube об этом, как создать dc bot и предоставить ему права администратора.
перейдите на этот сайт https://discord.com/developers/applications /
скопируйте URL, добавьте сайты мониторинга, и ваш discord-бот готов к использованию 7/24 с помощью
скопируйте свой токен и создайте свой mysecrettoken
пример мониторинга сайтов:https://uptimerobot.com 😁😁😁😁 ваш dc-бот готов