Ошибка указывает, что возникла проблема при запуске функции `Song.my_after` с помощью `asyncio.run`. Возможно, эта функция не является асинхронной, или вы не находитесь в асинхронном контексте при вызове `init_after`.
Попробуйте обернуть `Song.my_after` в `asyncio.create_task`, чтобы запустить ее как асинхронное задание:
async def init_after(ctx):
asyncio.create_task(Song.my_after(ctx))
Вы можете запустить только асинхронные функции с помощью `create_task`. Если `Song.my_after` является синхронной функцией, вам нужно будет преобразовать ее в асинхронную с помощью декоратора `@asyncio.coroutine`, или с помощью `async def` в Python 3.5 и выше.
Чтобы отправлять сообщение «Сейчас играет» при каждом новом треке, вы можете добавить отправку сообщения в функцию `play`, которую вы написали:
async def play(ctx):
# ...
await ctx.send("Сейчас играет: {}".format(names[0]))
Также вы можете отправлять это сообщение в функции `init_after`, которая вызывается после окончания воспроизведения текущего трека:
async def init_after(ctx):
# ...
await ctx.send("Сейчас играет: {}".format(names[0]))