@client.command()
async def test(ctx):
await ctx.author.send(f'test')
# сохраняем набор и порядок каналов на случай, если он поменяется в процессе отправки.
channels = list(ctx.guild.text_channels)
# формируем пачку корутин, выполняющих отправку
send_coroutines = [channel.send('test') for channel in channels]
# планируем одновременное выполнение этих корутин и ждём завершения.
# Исключения будут возвращены наравне с результатами, а не выброшены.
results = await asyncio.gather(*send_coroutines, return_exceptions=True)
# анализируем results на предмет ошибок.
# Успешная отправка вернёт объект сообщения, неудачная вернет (а не выбросит!) объект исключения.
failed = [ (ch.name, str(res)) for res, ch in zip(results, channels) if isinstance(res, (Exception, asyncio.CancelledError)) ]
if failed: # были ошибки?
await ctx.author.send('Failed to send to the following channels:\n' + '\n'.join(f'- {ch}: {msg}' for ch, msg in failed))
else: # ошибок не было
await ctx.author.send('Message has been spammed successfully.')
class WordComparator:
def compare(self, word1: str, word2: str) -> int:
"Вернет -1 если первое слово лучше, 1 если второе слово лучше, 0 если они одинаково хороши"
raise NotImplementedError #реализации у нас нет
class LongestWordWins(WordComparator):
def compare(self, word1: str, word2: str) -> int:
l1, l2 = len(word1), len(word2)
if l1 > l2:
return -1
elif l1 < l2:
return 1
else:
return 0
class ShortestWordWins(WordComparator):
def compare(self, word1: str, word2: str) -> int:
l1, l2 = len(word1), len(word2)
if l1 > l2:
return 1
elif l1 < l2:
return -1
else:
return 0
im = Image.open('IMG_7760.JPG')
a = np.asarray(im) # a - трёхмерный массив numpy (высота; ширина; каналы)
for bb in a: # перебираешь элементы по первому индексу (высоте), т.е. строки изображения
np.random.random((1,1,1)) * a #умножаешь каждый элемент (кортеж RGB) строки на одно и то же случайное число
#и всё. Полученное произведение выбрасывается за ненадобностью. Оригинальное значение ты не заменяешь ведь.
im = Image.fromarray(bb) #*строку* превращаешь в объект PIL.Image
im.save('2222.JPG') #и сохраняешь этот объект в файл
print(bb) #и выводишь на экран