Close Menu
    Facebook X (Twitter) Instagram
    • Home
    • Contact Us
    • About Us
    • Privacy Policy
    • Terms Of Service
    • Advertisement
    Saturday, July 4
    Facebook X (Twitter) Instagram Pinterest Vimeo
    ABS Africa TV
    • Breaking News
    • Trending
    • Africa News
    • World News
    • Features
    • Technology
    • Sports
    • Politics
    • More
      • Culture
      • Lifestyle
      • Travel
      • Business
      • Environment
      • Legal
      • Health
      • Cameroon
      • Ambazonia
      • AfroSingles
      • Environ/Climate
      • Editorial
      • The Leak Magazine
    • Donate
    Subscription
    ABS Africa TV
    Home»Sports»Three Senegal fans imprisoned in Morocco over chaos during AFCON 2025 final freed after completing jail terms
    Sports

    Three Senegal fans imprisoned in Morocco over chaos during AFCON 2025 final freed after completing jail terms

    Johnson BenguruBy Johnson BenguruJuly 4, 2026No Comments9 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Three Senegal fans imprisoned in Morocco over chaos during AFCON 2025 final freed after completing jail terms
    Share
    Facebook Twitter LinkedIn Pinterest Email
    Post Views: 16

    Three Senegal fans imprisoned in Morocco over chaos during AFCON 2025 final freed after completing jail terms

    Three Senegal fans imprisoned in Morocco over chaos during AFCON 2025 final freed after completing jail terms

    Senegalese fans salute their national team during the 2022 AFCON. (Photo: CAF)

    Read this story aloud

    Listen to the clean text version of this article

    Ready
    3 min listen
    Audio reading is not supported on this browser.

    They were sentenced in February alongside 15 other fans and handed prison terms ranging from three months to one year following violent scenes at the AFCON final, including attempting a pitch invasion and deliberately disrupting the match’s proceedings

    Three of the 18 Senegalese football fans who were imprisoned in Morocco following chaotic scenes linked to the disputed Africa Cup of Nations Final (AFCON) 2025 final have been released after completing their prison sentences.
    The trio, who were freed on Saturday after finishing their three-month sentences, were received by Senegalese officials in Morocco ahead of their return home.
    They were sentenced in February alongside 15 other fans and handed prison terms ranging from three months to one year following violent scenes at the AFCON final, including attempting a pitch invasion and deliberately disrupting the match’s proceedings.

    More To Read

    • Morocco’s King pardons Senegalese fans jailed after AFCON 2025 Final chaos
    • CAF President Patrice Motsepe arrives in Senegal amid fury over revoked AFCON title
    • Senegal PM Sonko condemns jailing of 18 Senegalese fans in Morocco after AFCON final

    “I inform you of the effective release of three of the 18 compatriots detained in Morocco,” Senegalese defence lawyer Patrick Kabou said on X, confirming the development.
    The releases mark the latest development in a controversy that has continued to overshadow the 2025 AFCON final, which was marred by violent scenes and subsequent disciplinary and legal action.
    Senegal has since taken the matter to the Court of Arbitration for Sport (CAS) after the Confederation of African Football (CAF) overturned their 1–0 victory in Rabat, escalating a dispute that remains unresolved at the highest level of football governance.

    Latest Stories

    • Government announces final repatriation flight for Kenyans in South Africa
    • Six killed as matatu, trailer collide head-on along Nakuru-Eldoret highway
    • Egypt end 92-year wait to reach World Cup last 16
    • Ethiopia coffee exports hit record Sh388 billion on rising global demand

    CAS has confirmed receipt of the appeal, which challenges both CAF and the Royal Moroccan Football Federation over CAF’s March 17 ruling to overturn the result, stripping Senegal of the title and awarding it to Morocco.
    In its appeal, the Senegalese Football Federation (FSF) is asking for the CAF ruling to be overturned and for Senegal to be officially recognised as the tournament winners. Senegal also requested a suspension of the deadline for submitting its full appeal until CAF provides a complete explanation for its ruling.
    A panel of arbitrators is expected to be appointed to hear the case, after which a procedural timetable will be established. Under standard regulations, Senegal will be given 20 days to submit its detailed written submission, followed by a further 20 days for the respondents to file their replies.
    While the timetable is set under standard rules, CAS cautioned that it is too early to predict how long the process will take or when a hearing will be scheduled.
    “At this early stage of proceedings and considering the FSF request to suspend deadlines, it is not possible to anticipate a procedural timeline and to indicate when a hearing will be scheduled,” CAS said last month.

    Other Topics To Read

    Top Stories Today

    • Government announces final repatriation flight for Kenyans in South Africa
    • Six killed as matatu, trailer collide head-on along Nakuru-Eldoret highway
    • Egypt end 92-year wait to reach World Cup last 16
    • Ethiopia coffee exports hit record Sh388 billion on rising global demand
    • Messi makes history as Argentina survive Cape Verde’s unforgettable World Cup fight
    • Renewable energy boom cuts global fossil fuel bill by Sh62 trillion in 2025

    `;
    }

    return “;
    }

    function commentActionsMarkup(comment, canComment) {
    const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
    const likeCount = Number(comment.like_count || 0) > 0
    ? “
    : ”;

    const likeButton = canComment && comment.status === ‘approved’
    ? “
    : “;

    const replyButton = canComment && comment.status === ‘approved’
    ? “
    : ”;

    return `

    `;
    }

    function commentMarkup(comment, canComment, isReply = false) {
    const pendingBadge = comment.status && comment.status !== ‘approved’
    ? “
    : ”;

    const edited = comment.is_edited
    ? “
    : ”;

    const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
    ? `

    `
    : “;

    return `

    `;
    }

    function replyFormMarkup(commentId) {
    return `

    `;
    }

    function setNotice(widget, message, type = ‘info’) {
    const notice = widget.querySelector(‘[data-role=”notice”]’);
    if (!notice) return;

    if (!message) {
    notice.hidden = true;
    notice.textContent = ”;
    notice.classList.remove(‘is-error’);
    return;
    }

    notice.hidden = false;
    notice.textContent = message;
    notice.classList.toggle(‘is-error’, type === ‘error’);
    }

    function setCount(widget, total) {
    const count = widget.querySelector(‘[data-role=”count”]’);
    if (!count) return;

    const num = Number(total || 0);
    count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
    }

    function openReplyBox(widget, commentId) {
    widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
    box.hidden = true;
    box.innerHTML = ”;
    });

    const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
    if (!targetItem) return;

    const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
    if (!replyBox) return;

    replyBox.hidden = false;
    replyBox.innerHTML = replyFormMarkup(commentId);

    const textarea = replyBox.querySelector(‘textarea’);
    if (textarea) textarea.focus();
    }

    function closeReplyBox(container) {
    if (!container) return;
    container.hidden = true;
    container.innerHTML = ”;
    }

    async function initCommentsWidget(widget) {
    const state = {
    articleId: Number(widget.dataset.articleId),
    loadUrl: widget.dataset.loadUrl,
    storeUrl: widget.dataset.storeUrl,
    commentsBaseUrl: widget.dataset.commentsBaseUrl,
    canComment: widget.dataset.canComment === ‘1’,
    page: 1,
    perPage: 10,
    sort: ‘newest’,
    total: 0,
    hasMore: false,
    busy: false
    };

    const list = widget.querySelector(‘[data-role=”list”]’);
    const loading = widget.querySelector(‘[data-role=”loading”]’);
    const empty = widget.querySelector(‘[data-role=”empty”]’);
    const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
    const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
    const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);

    async function loadComments(reset = true) {
    if (state.busy) return;

    state.busy = true;
    setNotice(widget, ”);
    loading.hidden = false;

    if (reset) {
    state.page = 1;
    list.innerHTML = ”;
    empty.hidden = true;
    }

    try {
    const url = new URL(state.loadUrl, window.location.origin);
    url.searchParams.set(‘page’, state.page);
    url.searchParams.set(‘per_page’, state.perPage);
    url.searchParams.set(‘sort’, state.sort);

    const response = await requestJson(url.toString(), {
    method: ‘GET’,
    headers: {
    ‘Accept’: ‘application/json’,
    ‘X-Requested-With’: ‘XMLHttpRequest’
    }
    });

    const items = Array.isArray(response.data) ? response.data : [];
    const meta = response.meta || {};

    state.total = Number(meta.total || 0);
    state.hasMore = !!meta.has_more;

    setCount(widget, state.total);

    if (reset) {
    list.innerHTML = ”;
    }

    if (!items.length && reset) {
    empty.hidden = false;
    } else {
    empty.hidden = true;
    list.insertAdjacentHTML(
    ‘beforeend’,
    items.map(item => commentMarkup(item, state.canComment, false)).join(”)
    );
    }

    loadMoreBtn.hidden = !state.hasMore;
    } catch (error) {
    if (!list.children.length) {
    empty.hidden = false;
    empty.textContent = ‘Unable to load comments right now.’;
    }
    setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
    } finally {
    loading.hidden = true;
    state.busy = false;
    }
    }

    async function submitTopLevelComment(form) {
    const textarea = form.querySelector(‘textarea[name=”content”]’);
    const button = form.querySelector(‘[data-role=”submit-comment”]’);

    if (!textarea) return;

    const content = textarea.value.trim();
    if (!content) return;

    const originalText = button ? button.textContent : ”;

    try {
    if (button) {
    button.disabled = true;
    button.textContent = ‘Posting…’;
    }

    const response = await requestJson(state.storeUrl, {
    method: ‘POST’,
    headers: buildJsonHeaders(),
    body: JSON.stringify({
    article_id: state.articleId,
    content: content,
    source_url: window.location.href
    })
    });

    textarea.value = ”;

    if (response?.data) {
    list.insertAdjacentHTML(
    ‘afterbegin’,
    commentMarkup(response.data, state.canComment, false)
    );
    empty.hidden = true;

    if ((response.data.status || ”) === ‘approved’) {
    state.total += 1;
    setCount(widget, state.total);
    }
    }

    setNotice(widget, response.message || ‘Comment posted successfully.’);
    } catch (error) {
    setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
    } finally {
    if (button) {
    button.disabled = false;
    button.textContent = originalText || ‘Post comment’;
    }
    }
    }

    async function submitReply(form) {
    const commentId = Number(form.dataset.commentId || 0);
    const textarea = form.querySelector(‘textarea[name=”content”]’);
    const button = form.querySelector(‘.ev-comments__reply-submit’);

    if (!commentId || !textarea) return;

    const content = textarea.value.trim();
    if (!content) return;

    const originalText = button ? button.textContent : ”;

    try {
    if (button) {
    button.disabled = true;
    button.textContent = ‘Posting…’;
    }

    const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
    method: ‘POST’,
    headers: buildJsonHeaders(),
    body: JSON.stringify({
    article_id: state.articleId,
    content: content,
    source_url: window.location.href
    })
    });

    if (response?.data) {
    const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
    if (parentItem) {
    const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
    if (repliesWrap) {
    repliesWrap.insertAdjacentHTML(
    ‘beforeend’,
    commentMarkup(response.data, state.canComment, true)
    );
    }
    }
    }

    closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
    setNotice(widget, response.message || ‘Reply posted successfully.’);
    } catch (error) {
    setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
    } finally {
    if (button) {
    button.disabled = false;
    button.textContent = originalText || ‘Post reply’;
    }
    }
    }

    async function toggleLike(button) {
    const commentId = Number(button.dataset.commentId || 0);
    if (!commentId) return;

    const originalHtml = button.innerHTML;

    try {
    button.disabled = true;
    button.innerHTML = ‘Working…’;

    const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
    method: ‘POST’,
    headers: buildJsonHeaders(),
    body: JSON.stringify({})
    });

    const liked = !!response?.data?.liked;
    const likeCount = Number(response?.data?.like_count || 0);

    button.classList.toggle(‘is-liked’, liked);
    button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
    } catch (error) {
    button.innerHTML = originalHtml;
    setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
    } finally {
    button.disabled = false;
    }
    }

    if (composerForm) {
    composerForm.addEventListener(‘submit’, function (e) {
    e.preventDefault();
    submitTopLevelComment(composerForm);
    });
    }

    if (sortSelect) {
    sortSelect.addEventListener(‘change’, function () {
    state.sort = this.value || ‘newest’;
    loadComments(true);
    });
    }

    if (loadMoreBtn) {
    loadMoreBtn.addEventListener(‘click’, function () {
    if (state.busy || !state.hasMore) return;
    state.page += 1;
    loadComments(false);
    });
    }

    widget.addEventListener(‘click’, function (e) {
    const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
    if (likeBtn) {
    e.preventDefault();
    toggleLike(likeBtn);
    return;
    }

    const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
    if (replyBtn) {
    e.preventDefault();
    openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
    return;
    }

    const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
    if (cancelReplyBtn) {
    e.preventDefault();
    closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
    }
    });

    widget.addEventListener(‘submit’, function (e) {
    const replyForm = e.target.closest(‘.ev-comments__reply-form’);
    if (replyForm) {
    e.preventDefault();
    submitReply(replyForm);
    }
    });

    loadComments(true);
    }

    document.addEventListener(‘DOMContentLoaded’, function () {
    document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
    });
    })();

    Trending

    Six killed as matatu, trailer collide head-on along Nakuru-Eldoret highway
    Six killed as matatu, trailer collide head-on along Nakuru-Eldoret highwayNews
    |Rachael Mutabasi
    |33 minutes ago
    Renewable energy boom cuts global fossil fuel bill by Sh62 trillion in 2025
    Renewable energy boom cuts global fossil fuel bill by Sh62 trillion in 2025Business
    |Alfred Onyango
    |2 hours ago
    Pakistan probes human placenta trafficking ring linked to anti-ageing injections
    Pakistan probes human placenta trafficking ring linked to anti-ageing injectionsHealth
    |Charity Kilei
    |11 hours ago
    Final repatriation flight for Kenyans in South Africa set for July 9
    Final repatriation flight for Kenyans in South Africa set for July 9News
    |Rachael Mutabasi
    |10 minutes ago
    Egypt end 92-year wait to reach World Cup last 16
    Egypt end 92-year wait to reach World Cup last 16News
    |Erick Kariuki
    |1 hour ago
    Court bars activist Morara Kebaso from making defamatory statements against Borabu MP Patrick Osero
    Court bars activist Morara Kebaso from making defamatory statements against Borabu MP Patrick OseroNews
    |Carolyne Kubwa
    |1 day ago
    Cancer tumors turn immune cells from fighters into feeders - study
    Cancer tumors turn immune cells from fighters into feeders – studyHealth
    |XINHUA
    |22 hours ago
    MPs raise alarm over missing land records, vehicle logbooks at State Department for Labour
    MPs raise alarm over missing land records, vehicle logbooks at State Department for LabourNews
    |Rachael Mutabasi
    |17 hours ago
    Kenya qualifies for FIFAe Continental Championship after historic top-eight finish
    Kenya qualifies for FIFAe Continental Championship after historic top-eight finishNews
    |Erick Kariuki
    |1 day ago
    High Court blocks Kenya Railways bid to evict Muthurwa estate residents
    High Court blocks Kenya Railways bid to evict Muthurwa estate residentsNews
    |Carolyne Kubwa
    |1 day ago

    fans imprisoned Morocco Senegal Three
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Johnson Benguru
    • Website

    Related Posts

    Controversial AFCON final referee Ndala left out of FIFA 2026 World Cup list

    July 4, 2026

    Can the youthful Morocco of 2026 surpass the acclaimed darlings of 2022?

    July 4, 2026

    CAF

    July 4, 2026
    Leave A Reply Cancel Reply

    Search
    Latest Post

    S African deputy president highlights synergy with China’s development goals

    July 4, 2026

    Lawsuit Seeks to Halt Maasai Mara Luxury Tourism Construction

    July 4, 2026

    OKX Wants AI Agents To Hire And Pay Each Other In 2026

    July 4, 2026

    Africa’s healthcare worker shortage keeps focus on medical training as SGU graduates new doctors

    July 4, 2026

    Legal Notes by Arvind Datar: The Impact of US Constitutional Law

    July 4, 2026

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • TikTok
    ABS TV and ABS Network News is a leading Pan-African 24/7 broadcasting network delivering nonstop news, talk shows, lifestyle programs, and digital media content worldwide through Satellite, Streaming Platforms, and Roku TV.
     
    Based in the United States, we connect Africa to the world while empowering creators, journalists, and brands through innovative media and broadcasting services.
    Facebook X (Twitter) Pinterest WhatsApp Instagram

    Our Picks

    Travel

    S African deputy president highlights synergy with China’s development goals

    Environment

    Lawsuit Seeks to Halt Maasai Mara Luxury Tourism Construction

    Business

    OKX Wants AI Agents To Hire And Pay Each Other In 2026

    Most Popular

    Health

    Africa’s healthcare worker shortage keeps focus on medical training as SGU graduates new doctors

    Legal

    Legal Notes by Arvind Datar: The Impact of US Constitutional Law

    Lifestyle

    Amyafrique Art Gallery: A Platform for African Creativity

    © 2026 Copyright. All Rights Reserved by ABSAFRICATV
    • Privacy Policy
    • Terms of Services

    Type above and press Enter to search. Press Esc to cancel.

    We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.