Twitch message filter from spammers

I’m moderating twitch chat using bot on node.js.
We have a problem, sometimes bots are raiding our channel and spam messages like:

  • 88|неodeтыe голышкuнсы в т_еле_ж̴eч_кe dosia739
  • гolышkи шkoднuчku в-телеграмчике : juice644 |82
  • 87|rолышкu wkоlьницы в теlеграм4икe / recrenт361
  • 89|спуctuл cпeрму на tрусы шкодниц – тeлеrрам aunkerе450
  • 62 oтсосала охрaнниkу, чтобы tот пустил 6ез смeнки, чеkай синегрaм : buster824
  • 88 пaрни 13 leт дрочаt dруг дpугу при пoдруге в тгшноu recrеnt361
  • 84 clиb wkolьниц в телеrе -> juice644
  • JN шkодницы 6aлyются b тyалете wколы в t.елеге strоgo376
  • 124_rолышku шкоdничkи в-теlегрaмчиkе : recrent361
  • Le педомамки е6ут новорoждённых маль4uкоb, смotри те-л-еrу > aunkere450
  • 87|cлuв нeодетыx wkoдниц b..телеге olyаshaa123
  • 87|отсосала оxpаннику, чтобы тот nустил без сменки, 4еkай сuнeграm / recrеnt361
  • rolые wкоlьницы в_teлеrраме recrеnt361 Ap
  • rоленькue голышkи b-tелeграмчиwе recrеnt361 |38
  • wd ра3dетые гоlышkи b teлегe muмino531
  • Dw cлиb шкoльнuц b telеге -> strogo376
  • 123_лютая заnpеwенка со шкodницamи , те-лeграмчик miradota328
  • 124_cлив нeодетых шkоlодpыг в t.е.лeгe juicе644
  • rоlышки wkолодрыги b тeлeграмчиkе juicе584 YW
  • гоlенькиe wkoднuчки в телегpаmище – аunkere450 |48
  • голeнькие шkоднu4kи b телеграmищe juicе644 |6
  • 18 rоlыe шkodницы b телегe дosia739
  • hJ гolые шkоlьницы в_tеlегpамe mixazvеr451
  • 123_неодеtыe wкodницы в-tе-леграmчuке olyashaа123
  • Tl гoленькиe гoлыwки_в_tеleгpаме – sтeel537
  • 15 rоlышки шкоdнuчkи в-телеrрамчukе general301
  • 11 rолышkи шкоlодрыru в teлеграмчuке strоgo376
  • oK clив шkoльниц b тeleграме мumino531
  • 93 lюtая̾ заnpещенка со шкодницами , те-лerрамчuк juicе584
  • 124_oдноkлaсснuк e6ет 15 lетнюю в те_ле_rе > rosтislav441
  • Jv наказала сына и засtавиlа ли3aть пя̾ткu в этоm т.r. tx740

And I have lack of understanding what is similar and how to differ sthis messages from normal chat users

The way I do it right now is adding every last letter and numbers to check if it contains in message, but I dont think it’s reliable for future and works only after spam is occur

if (
    text.toLowerCase().includes('a739') ||
    text.toLowerCase().includes("e644") ||
    text.toLowerCase().includes("e450")
    //etc.
  ) {
    await apiClient.asUser(
      nyaka,
      async (ctx) =>
        await ctx.moderation.banUser(msg.channelId, {
          reason: `${user}: ${text}`,
          user: msg.userInfo.userId,
        })
    );