Этот вопрос закрыт для ответов, так как повторяет вопрос Как сделать так, чтобы бот писал в канал вовремя?
Lolik666
@Lolik666
Лох педальный, профессиональный

Код бота на отправление сообщения работает, но бот не пишет в чат, как это исправить?

И так, пишу я таки бота:
import discord
from discord.ext import commands
from discord.ext import tasks
from time import time, localtime

user_counter = {}

msg = 'Статистика:\n'

client = commands.Bot( command_prefix = '-')

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))




@client.event
async def on_message(message):
    if message.author == client.user:
        return
    else:
    	try:
    		user_counter[message.author.id] += 1
    	except KeyError:
    		user_counter[message.author.id] = 1
    await client.process_commands(message)

@client.command( pass_context = True)
async def globalstat(ctx):
    for user_id,counter in user_counter.items():
        global msg
        user = client.get_user(user_id)
        msg = msg+' >> ' + user.name + ': ' + str(counter)  + '\n'
        await ctx.send(msg)


@tasks.loop(seconds=20)
async def timer_notify():
    await client.wait_until_ready()
    cur_time = localtime(time())
    for user_id,counter in user_counter.items():
        global msg
        user = client.get_user(user_id)
        msg = msg+' >> ' + user.name + ': ' + str(counter)  + '\n'
    msg = 'Статистика:\n'

Нас интересует эта часть кода
@tasks.loop(seconds=20)
async def timer_notify():
    await client.wait_until_ready()
    cur_time = localtime(time())
    for user_id,counter in user_counter.items():
        global msg
        user = client.get_user(user_id)
        msg = msg+' >> ' + user.name + ': ' + str(counter)  + '\n'
    msg = 'Статистика:\n'

И так, как бы я не писала, ни await message.channel.send(msg)
ниawait channel.send(msg)
и даже без await писала, ничего не получается. Но сам код рабочий, через print работает
Так вот, как попросить бота быть благосклонным ко мне и написать сообщение в канал?Так запарилась с этим, а всё равно не робит
  • Вопрос задан
  • 167 просмотров
Решения вопроса 2
@marselabdullin
Не знаю, что конкретно у вас не работает, но то, что вы постоянно перезаписываете msg в этих строках ненормально:
msg = msg+' >> ' + user.name + ': ' + str(counter)  + '\n'
    msg = 'Статистика:\n'

Возможно вам стоит использовать +=
Ответ написан
shurshur
@shurshur
Сисадмин, просто сисадмин...
Тут в коде нет никакой отправки сообщений. Об этом смотреть в Как сделать так, чтобы бот писал в канал вовремя (код прилагается)?

И да, global msg убрать - оно тут не нужно совсем - а msg = 'Статистика:\n' переставить перед циклом.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы