discord автоматические реакции на все сообщения

NORTEX666

Участник
Автор темы
149
10
написал селфбота для дискорда который ставит на новые сообщения в указанном канале реакцию, хотелось бы что бы не нужно было менять код каждый раз и юзать это через команду типо .reaction

P.S скиньте доработанный код если такое можно сделать

мой код:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"

@client.event
async def on_message(message):
    if not message.channel.id == (айди канала типа): return
    await message.add_reaction("🥶")
client.run(token, bot = False)
 
Решение
Для того чтобы изменить канал, в котором бот будет добавлять реакции, можно добавить команду для изменения айди канала.

Ниже приведен пример кода с такой командой:


JavaScript:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"
channel_id = None

@client.event
async def on_message(message):
    if channel_id is None or message.channel.id != channel_id:
        return
    await message.add_reaction("🥶")

@client.command()
async def setchannel(ctx, channel: discord.TextChannel):
    global channel_id
    channel_id = channel.id
    await ctx.send(f"Канал для реакций изменен на {channel.mention}")

client.run(token, bot =...

teresen

Участник
28
16
Попробуй это:
Код:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"

@client.event
async def on_message(message):
    channelId = message.channel.id
    if not channelId == (айди канала типа): return
    await message.add_reaction("🥶")

@client.command()
@commands.is_owner()
async def setReaction(ctx, channelId, reaction):
    if not ctx.message.channel.id == (айди канала типа): return
    @client.event
    async def on_message(message):
        if not message.channel.id == channelId: return
        await message.add_reaction(reaction)

client.run(token, bot = False)
Там допишешь свое, что нужно.
 

NORTEX666

Участник
Автор темы
149
10
Попробуй это:
Код:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"

@client.event
async def on_message(message):
    channelId = message.channel.id
    if not channelId == (айди канала типа): return
    await message.add_reaction("🥶")

@client.command()
@commands.is_owner()
async def setReaction(ctx, channelId, reaction):
    if not ctx.message.channel.id == (айди канала типа): return
    @client.event
    async def on_message(message):
        if not message.channel.id == channelId: return
        await message.add_reaction(reaction)

client.run(token, bot = False)
Там допишешь свое, что нужно.
не работает
 

NORTEX666

Участник
Автор темы
149
10
Что именно не работает? Проверь права бота, дай мне лог, хоть что-нибудь.
какие права бота, я изначально написал что это селфбот, естественно я знаю что нужны права на проставление реакций и тд

Python:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token =

@client.command()
async def asd(ctx, channelId, reaction):
    await ctx.message.delete()
    if not ctx.message.channel.id == channelId: return
    @client.event
    async def on_message(message):
        if not message.channel.id == channelId: return
        await message.add_reaction(reaction)

client.run(token, bot = False)

пишу команду, указываю ид канала, реакцию в лог ничего не выдает но все равно ничего не происходит
 

vladsharik

Участник
132
18
какие права бота, я изначально написал что это селфбот, естественно я знаю что нужны права на проставление реакций и тд

Python:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token =

@client.command()
async def asd(ctx, channelId, reaction):
    await ctx.message.delete()
    if not ctx.message.channel.id == channelId: return
    @client.event
    async def on_message(message):
        if not message.channel.id == channelId: return
        await message.add_reaction(reaction)

client.run(token, bot = False)

пишу команду, указываю ид канала, реакцию в лог ничего не выдает но все равно ничего не происходит
Как мы тебе поможем если ты лог ошибки скинуть не можешь блять
 

tokyo.htb

Активный
232
74
Для того чтобы изменить канал, в котором бот будет добавлять реакции, можно добавить команду для изменения айди канала.

Ниже приведен пример кода с такой командой:


JavaScript:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"
channel_id = None

@client.event
async def on_message(message):
    if channel_id is None or message.channel.id != channel_id:
        return
    await message.add_reaction("🥶")

@client.command()
async def setchannel(ctx, channel: discord.TextChannel):
    global channel_id
    channel_id = channel.id
    await ctx.send(f"Канал для реакций изменен на {channel.mention}")

client.run(token, bot = False)

В этом коде добавлена команда .setchannel, которая позволяет указать канал для реакций. Чтобы изменить канал, нужно написать команду .setchannel в канале, в котором хотите изменить канал для реакций, и указать канал, например: .setchannel #general. После этого бот будет добавлять реакции только в указанный канал.